| #!/usr/bin/env bash |
| |
| # Run the integration tests with multiple versions of the Docker engine |
| |
| set -e |
| set -x |
| |
| DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) |
| |
| |
| if [ "$TMPDIR" != "" ] && [ ! -d "$TMPDIR" ]; then |
| mkdir -p $TMPDIR |
| fi |
| |
| cachedir=`mktemp -t -d golem-cache.XXXXXX` |
| trap "rm -rf $cachedir" EXIT |
| |
| if [ "$1" == "-d" ]; then |
| # Drivers to use for Docker engines the tests are going to create. |
| STORAGE_DRIVER=${STORAGE_DRIVER:-overlay} |
| |
| docker daemon --log-level=panic --storage-driver="$STORAGE_DRIVER" & |
| DOCKER_PID=$! |
| |
| # Wait for it to become reachable. |
| tries=10 |
| until docker version &> /dev/null; do |
| (( tries-- )) |
| if [ $tries -le 0 ]; then |
| echo >&2 "error: daemon failed to start" |
| exit 1 |
| fi |
| sleep 1 |
| done |
| |
| trap "kill $DOCKER_PID" EXIT |
| fi |
| |
| distimage=$(docker build -q $DIR/../..) |
| fullversion=$(git describe --match 'v[0-9]*' --dirty='.m' --always) |
| distversion=${fullversion:1} |
| |
| echo "Testing image $distimage with distribution version $distversion" |
| |
| # Pull needed images before invoking golem to get pull time |
| # These images are defined in golem.conf |
| time docker pull nginx:1.9 |
| time docker pull golang:1.6 |
| time docker pull dmcgowan/token-server:simple |
| time docker pull dmcgowan/token-server:oauth |
| time docker pull distribution/golem-runner:0.1-bats |
| |
| time docker pull docker:1.9.1-dind |
| time docker pull docker:1.10.3-dind |
| time docker pull docker:1.11.1-dind |
| time docker pull docker:1.12.3-dind |
| time docker pull docker:1.13.0-rc5-dind |
| |
| golem -cache $cachedir \ |
| -i "golem-distribution:latest,$distimage,$distversion" \ |
| -i "golem-dind:latest,docker:1.9.1-dind,1.9.1" \ |
| -i "golem-dind:latest,docker:1.10.3-dind,1.10.3" \ |
| -i "golem-dind:latest,docker:1.11.1-dind,1.11.1" \ |
| -i "golem-dind:latest,docker:1.12.3-dind,1.12.3" \ |
| -i "golem-dind:latest,docker:1.13.0-rc5-dind,1.13.0" \ |
| $DIR |
| |