From 1368e2ac53e9aa164d2d2a0e1bac1c2ffba01182 Mon Sep 17 00:00:00 2001 From: Aaron Lehmann Date: Thu, 30 Jul 2015 15:38:33 -0700 Subject: [PATCH] Change run_multiversion.sh to get Docker engine versions from dind container This is much better than downloading the builds with curl, because Docker is intelligent about only pulling what it needs. We use tagged versions of dind for the released version, and dind-master for a master build. Signed-off-by: Aaron Lehmann --- .../docker-integration/run_multiversion.sh | 32 ++++++++++++------- contrib/docker-integration/tls.bats | 4 +-- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/contrib/docker-integration/run_multiversion.sh b/contrib/docker-integration/run_multiversion.sh index 694dec4e..e52a0e24 100755 --- a/contrib/docker-integration/run_multiversion.sh +++ b/contrib/docker-integration/run_multiversion.sh @@ -3,6 +3,7 @@ # Run the integration tests with multiple versions of the Docker engine set -e +set -x # Don't use /tmp because this isn't available in boot2docker tmpdir_template="`pwd`/docker-versions.XXXXX" @@ -23,24 +24,31 @@ fi # Released versions -versions="1.6.0 1.7.0" +versions="1.6.0 1.6.1 1.7.0 1.7.1" for v in $versions; do - echo "Downloading Docker $v" - binpath="$tmpdir/docker-$v" - curl -L -o "$binpath" "https://test.docker.com/builds/Linux/x86_64/docker-$v" - chmod +x "$binpath" + echo "Extracting Docker $v from dind image" + binpath="$tmpdir/docker-$v/docker" + ID=$(docker create dockerswarm/dind:$v) + docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-$v" + echo "Running tests with Docker $v" DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh + + # Cleanup. + docker rm -f "$ID" done # Latest experimental version -# Extract URI from https://experimental.docker.com/builds/ -experimental=`curl -sSL https://experimental.docker.com/builds/ | tr " " "\n" | grep 'https://experimental.docker.com/builds/Linux/'` -echo "Downloading Docker experimental" -binpath="$tmpdir/docker-experimental" -curl -L -o "$binpath" "$experimental" -chmod +x "$binpath" -echo "Running tests with Docker experimental" +echo "Extracting Docker master from dind image" +binpath="$tmpdir/docker-master/docker" +docker pull dockerswarm/dind-master +ID=$(docker create dockerswarm/dind-master) +docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-master" + +echo "Running tests with Docker master" DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh + +# Cleanup. +docker rm -f "$ID" diff --git a/contrib/docker-integration/tls.bats b/contrib/docker-integration/tls.bats index 47ab6895..8b7ae287 100644 --- a/contrib/docker-integration/tls.bats +++ b/contrib/docker-integration/tls.bats @@ -16,9 +16,9 @@ function setup() { # skip basic auth tests with Docker 1.6, where they don't pass due to # certificate issues function basic_auth_version_check() { - run sh -c 'docker version | fgrep -q "Client version: 1.6.0"' + run sh -c 'docker version | fgrep -q "Client version: 1.6."' if [ "$status" -eq 0 ]; then - skip "Basic auth tests don't support 1.6.0" + skip "Basic auth tests don't support 1.6.x" fi }