From edf4c3ed97d23d1015aba24b6e902d86c09a2049 Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Tue, 25 Jan 2022 08:06:08 +0100 Subject: [PATCH] tests/e2e: allow option E2E_DIND_VERSION to test with different Docker versions --- Dockerfile | 6 ++++-- Makefile | 13 +++++++------ tests/dind.sh | 15 ++++++++++++++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8397e915..00a10b9d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +ARG DOCKER_VERSION=20.10 ############################################################ # builder # # -> golang image used solely for building the k3d binary # @@ -14,12 +15,13 @@ RUN make build -e GIT_TAG_OVERRIDE=${GIT_TAG_OVERRIDE} && bin/k3d version # -> k3d + some tools in a docker-in-docker container # # -> used e.g. in our CI pipelines for testing # ####################################################### -FROM docker:20.10-dind as dind +FROM docker:$DOCKER_VERSION-dind as dind ARG OS=linux ARG ARCH=amd64 # install some basic packages needed for testing, etc. -RUN echo "building for ${OS}/${ARCH}" && \ +RUN docker version; \ + echo ">>> building for ${OS}/${ARCH}" && \ apk update && \ apk add bash curl sudo jq git make netcat-openbsd diff --git a/Makefile b/Makefile index a3686fca..14fb7b62 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,7 @@ E2E_RUNNER_START_TIMEOUT ?= 10 E2E_HELPER_IMAGE_TAG ?= E2E_KEEP ?= E2E_PARALLEL ?= +E2E_DIND_VERSION ?= ########## Go Build Options ########## # Build targets @@ -127,18 +128,18 @@ build-cross: # build a specific docker target ( '%' matches the target as specified in the Dockerfile) build-docker-%: @echo "Building Docker image k3d:$(K3D_IMAGE_TAG)-$*" - DOCKER_BUILDKIT=1 docker build . --no-cache -t k3d:$(K3D_IMAGE_TAG)-$* --target $* + DOCKER_BUILDKIT=1 docker build . --quiet --no-cache -t k3d:$(K3D_IMAGE_TAG)-$* --target $* # build helper images build-helper-images: build-proxy-image build-tools-image build-proxy-image: @echo "Building docker image rancher/k3d-proxy:$(K3D_IMAGE_TAG)" - DOCKER_BUILDKIT=1 docker build --no-cache proxy/ -f proxy/Dockerfile -t rancher/k3d-proxy:$(K3D_IMAGE_TAG) + DOCKER_BUILDKIT=1 docker build --quiet --no-cache proxy/ -f proxy/Dockerfile -t rancher/k3d-proxy:$(K3D_IMAGE_TAG) build-tools-image: @echo "Building docker image rancher/k3d-tools:$(K3D_IMAGE_TAG)" - DOCKER_BUILDKIT=1 docker build --no-cache tools/ -f tools/Dockerfile -t rancher/k3d-tools:$(K3D_IMAGE_TAG) --build-arg GIT_TAG=$(GIT_TAG) + DOCKER_BUILDKIT=1 docker build --quiet --no-cache tools/ -f tools/Dockerfile -t rancher/k3d-tools:$(K3D_IMAGE_TAG) --build-arg GIT_TAG=$(GIT_TAG) ############################## ########## Cleaning ########## @@ -175,9 +176,9 @@ check: check-fmt lint test: $(GO) test $(TESTS) $(TESTFLAGS) -e2e: build-docker-dind - @echo "Running e2e tests in k3d:$(K3D_IMAGE_TAG)" - LOG_LEVEL="$(E2E_LOG_LEVEL)" E2E_INCLUDE="$(E2E_INCLUDE)" E2E_EXCLUDE="$(E2E_EXCLUDE)" E2E_EXTRA="$(E2E_EXTRA)" E2E_RUNNER_START_TIMEOUT=$(E2E_RUNNER_START_TIMEOUT) E2E_HELPER_IMAGE_TAG="$(E2E_HELPER_IMAGE_TAG)" E2E_KEEP="$(E2E_KEEP)" E2E_PARALLEL="$(E2E_PARALLEL)" tests/dind.sh "${K3D_IMAGE_TAG}-dind" +e2e: + @echo "Running e2e tests" + LOG_LEVEL="$(E2E_LOG_LEVEL)" E2E_INCLUDE="$(E2E_INCLUDE)" E2E_EXCLUDE="$(E2E_EXCLUDE)" E2E_EXTRA="$(E2E_EXTRA)" E2E_RUNNER_START_TIMEOUT=$(E2E_RUNNER_START_TIMEOUT) E2E_HELPER_IMAGE_TAG="$(E2E_HELPER_IMAGE_TAG)" E2E_KEEP="$(E2E_KEEP)" E2E_PARALLEL="$(E2E_PARALLEL)" E2E_DIND_VERSION="$(E2E_DIND_VERSION)" tests/dind.sh "${K3D_IMAGE_TAG}" ci-tests: fmt check e2e diff --git a/tests/dind.sh b/tests/dind.sh index 1d9f878e..2229cb10 100755 --- a/tests/dind.sh +++ b/tests/dind.sh @@ -1,7 +1,7 @@ #!/bin/bash K3D_EXE=${EXE:-/bin/k3d} -K3D_IMAGE_TAG=$1 +K3D_IMAGE_TAG="$1-dind" # define E2E_KEEP to non-empty for keeping the e2e runner container after running the tests E2E_KEEP=${E2E_KEEP:-} @@ -12,6 +12,9 @@ E2E_PARALLEL=${E2E_PARALLEL:-} # Max. time to wait for the runner container to be up RUNNER_START_TIMEOUT=${E2E_RUNNER_START_TIMEOUT:-10} +# Override Docker-in-Docker version +E2E_DIND_VERSION=${E2E_DIND_VERSION:-} + #################################################################################### CURR_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" @@ -28,9 +31,19 @@ source "$CURR_DIR/common.sh" #################################################################################### +info "Building container image k3d:${K3D_IMAGE_TAG}" +# Extra Image Build Arg +: "${EXTRA_BUILD_FLAG:=""}" +if [[ -n "$E2E_DIND_VERSION" ]]; then + info "Testing with Docker version $E2E_DIND_VERSION" + EXTRA_BUILD_FLAG="--build-arg DOCKER_VERSION=$E2E_DIND_VERSION" +fi +DOCKER_BUILDKIT=1 docker build . --quiet --no-cache $EXTRA_BUILD_FLAG --tag "k3d:${K3D_IMAGE_TAG}" --target "dind" || failed "Build failed" + # Start the runner container TIMESTAMP=$(date "+%y%m%d%H%M%S") container_name="k3d-e2e-runner-$TIMESTAMP" +info "Starting E2E Test Runner container ${container_name}" k3de2e=$(docker run -d \ -v "$(pwd):/src" \ --privileged \