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 <aaron.lehmann@docker.com>
This commit is contained in:
Aaron Lehmann 2015-07-30 15:38:33 -07:00
parent e564231f58
commit 1368e2ac53
2 changed files with 22 additions and 14 deletions

View file

@ -3,6 +3,7 @@
# Run the integration tests with multiple versions of the Docker engine # Run the integration tests with multiple versions of the Docker engine
set -e set -e
set -x
# Don't use /tmp because this isn't available in boot2docker # Don't use /tmp because this isn't available in boot2docker
tmpdir_template="`pwd`/docker-versions.XXXXX" tmpdir_template="`pwd`/docker-versions.XXXXX"
@ -23,24 +24,31 @@ fi
# Released versions # 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 for v in $versions; do
echo "Downloading Docker $v" echo "Extracting Docker $v from dind image"
binpath="$tmpdir/docker-$v" binpath="$tmpdir/docker-$v/docker"
curl -L -o "$binpath" "https://test.docker.com/builds/Linux/x86_64/docker-$v" ID=$(docker create dockerswarm/dind:$v)
chmod +x "$binpath" docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-$v"
echo "Running tests with Docker $v" echo "Running tests with Docker $v"
DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh
# Cleanup.
docker rm -f "$ID"
done done
# Latest experimental version # Latest experimental version
# Extract URI from https://experimental.docker.com/builds/ echo "Extracting Docker master from dind image"
experimental=`curl -sSL https://experimental.docker.com/builds/ | tr " " "\n" | grep 'https://experimental.docker.com/builds/Linux/'` binpath="$tmpdir/docker-master/docker"
echo "Downloading Docker experimental" docker pull dockerswarm/dind-master
binpath="$tmpdir/docker-experimental" ID=$(docker create dockerswarm/dind-master)
curl -L -o "$binpath" "$experimental" docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-master"
chmod +x "$binpath"
echo "Running tests with Docker experimental" echo "Running tests with Docker master"
DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh
# Cleanup.
docker rm -f "$ID"

View file

@ -16,9 +16,9 @@ function setup() {
# skip basic auth tests with Docker 1.6, where they don't pass due to # skip basic auth tests with Docker 1.6, where they don't pass due to
# certificate issues # certificate issues
function basic_auth_version_check() { 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 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 fi
} }