1e15b6e001
Previously, the strategy for avoiding lots of rebuilding and repulling for each Docker version being tested was to use a mountpoint to persist /var/lib/docker. This was pretty broken, and may not be a reliable strategy. This commit changes the scripts to instead build/pull images outside the innermost container, and copy them to the final test environment with docker save/docker load. This requires a fair amount of changes, since run.sh must now communicate with the Docker engine that was formerly started by test_runner.sh. The code that starts this engine has been broken out to run_engine.sh so that starting the engine and running the tests under it can be done separately (with the images loaded in between these steps). Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
53 lines
1.2 KiB
Bash
Executable file
53 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Run the integration tests with multiple versions of the Docker engine
|
|
|
|
set -e
|
|
set -x
|
|
|
|
source helpers.bash
|
|
|
|
if [ `uname` = "Linux" ]; then
|
|
tmpdir_template="$TMPDIR/docker-versions.XXXXX"
|
|
else
|
|
# /tmp isn't available for mounting in boot2docker
|
|
tmpdir_template="`pwd`/../../../docker-versions.XXXXX"
|
|
fi
|
|
|
|
tmpdir=`mktemp -d "$tmpdir_template"`
|
|
trap "rm -rf $tmpdir" EXIT
|
|
|
|
if [ "$1" == "-d" ]; then
|
|
start_daemon
|
|
fi
|
|
|
|
# Released versions
|
|
|
|
versions="1.6.0 1.6.1 1.7.0 1.7.1"
|
|
|
|
for v in $versions; do
|
|
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="$DOCKER_VOLUME" DOCKER_GRAPHDRIVER="$DOCKER_GRAPHDRIVER" ./run.sh
|
|
|
|
# Cleanup.
|
|
docker rm -f "$ID"
|
|
done
|
|
|
|
# Latest experimental version
|
|
|
|
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="$DOCKER_VOLUME" ./run.sh
|
|
|
|
# Cleanup.
|
|
docker rm -f "$ID"
|