tests/e2e: allow option E2E_DIND_VERSION to test with different Docker versions

pull/935/head
iwilltry42 3 years ago
parent 4dec2a9d68
commit edf4c3ed97
No known key found for this signature in database
GPG Key ID: 7BA57AD1CFF16110
  1. 6
      Dockerfile
  2. 13
      Makefile
  3. 15
      tests/dind.sh

@ -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

@ -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

@ -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 \

Loading…
Cancel
Save