Bug 1316519 - Squash docker image layers. r=dustin
MozReview-Commit-ID: 4ectVEMHQiX
--- a/testing/docker/image_builder/VERSION
+++ b/testing/docker/image_builder/VERSION
@@ -1,1 +1,1 @@
-1.0.0
+1.1.0
--- a/testing/docker/image_builder/build-image.sh
+++ b/testing/docker/image_builder/build-image.sh
@@ -45,15 +45,20 @@ curl -s \
| tee /tmp/docker-build.log \
| jq -r '.status + .progress, .stream[:-1], .error | select(. != null)'
# Exit non-zero if there is error entries in the log
if cat /tmp/docker-build.log | jq -se 'add | .error' > /dev/null; then
raise_error "Image build failed: `cat /tmp/docker-build.log | jq -rse 'add | .error'`";
fi
+# Squash image
+docker-squash \
+ -t "$IMAGE_NAME:$HASH" \
+ "$IMAGE_NAME:$HASH"
+
# Get image from docker daemon
# This interacts directly with the docker remote API, see:
# https://docs.docker.com/engine/reference/api/docker_remote_api_v1.18/
curl -s \
-X GET \
--unix-socket /var/run/docker.sock "http:/images/$IMAGE_NAME:$HASH/get" \
| zstd -3 -c -o /home/worker/workspace/artifacts/image.tar.zst
--- a/testing/docker/image_builder/setup.sh
+++ b/testing/docker/image_builder/setup.sh
@@ -7,29 +7,51 @@ export DEBIAN_FRONTEND=noninteractive
apt-get update -y
# Install dependencies
apt-get install -y \
curl \
tar \
jq \
python \
- build-essential # Only needed for zstd installation, will be removed later
+ python-pip \
+ build-essential
+# python-pip and build-essential will be removed later, they are only needed
+# for the installation.
# Install mercurial
. /setup/common.sh
. /setup/install-mercurial.sh
# Install build-image.sh script
chmod +x /usr/local/bin/build-image.sh
chmod +x /usr/local/bin/run-task
# Create workspace
mkdir -p /home/worker/workspace
+# Install docker-squash
+cat - > /setup/requirements.txt <<EOF
+docker-py==1.10.6
+docker-pycreds==0.2.1
+docker-squash==1.0.4
+ipaddress==1.0.17
+requests==2.11.1
+six==1.10.0
+websocket-client==0.37.0
+EOF
+pip install \
+ --no-cache-dir \
+ --disable-pip-version-check \
+ -r /setup/requirements.txt
+# Explicitly install python-pkg-resources, so it won't be removed by autoremove
+apt-get install -y python-pkg-resources
+# Remove pip, dependencies later remove by autoremove
+apt-get purge -y python-pip
+
# Install zstd 1.1.1
cd /setup
tooltool_fetch <<EOF
[
{
"size": 734872,
"visibility": "public",
"digest": "a8817e74254f21ee5b76a21691e009ede2cdc70a78facfa453902df3e710e90e78d67f2229956d835960fd1085c33312ff273771b75f9322117d85eb35d8e695",