when: - event: [push, manual] branch: [main] steps: prepare-e2e-image-tags: image: alpine:3.21 commands: - | COMMIT_SHA="${CI_COMMIT_SHA:-${CI_COMMIT:-${DRONE_COMMIT_SHA:-${DRONE_COMMIT:-}}}}" if [ -n "$COMMIT_SHA" ]; then IMAGE_TAG="$(printf '%s' "$COMMIT_SHA" | cut -c1-8)" else REF_NAME="${CI_COMMIT_REF:-${CI_COMMIT_BRANCH:-manual}}" REF_NAME="${REF_NAME#refs/heads/}" REF_NAME="$(printf '%s' "$REF_NAME" | sed 's#[^A-Za-z0-9_.-]#-#g')" IMAGE_TAG="$(printf '%s' "${REF_NAME:-manual}-${CI_PIPELINE_NUMBER:-0}" | cut -c1-32)" fi echo "Using e2e image tag: $IMAGE_TAG" printf '%s\n' "$IMAGE_TAG" > .e2e-tags - printf '%s\n' "latest" >> .e2e-tags build-and-push-e2e-image: image: docker.io/woodpeckerci/plugin-docker-buildx:latest privileged: true depends_on: - prepare-e2e-image-tags settings: registry: git.cluster.lab.kemkas.hu repo: git.cluster.lab.kemkas.hu/${CI_REPO}-e2e context: e2e dockerfile: e2e/Dockerfile tags_file: .e2e-tags username: from_secret: gitea_packages_username password: from_secret: gitea_packages_token run-e2e: image: docker:28-cli privileged: true depends_on: - build-and-push-e2e-image environment: GITEA_PACKAGES_USERNAME: from_secret: gitea_packages_username GITEA_PACKAGES_TOKEN: from_secret: gitea_packages_token commands: - | COMMIT_SHA="${CI_COMMIT_SHA:-${CI_COMMIT:-${DRONE_COMMIT_SHA:-${DRONE_COMMIT:-}}}}" if [ -n "$COMMIT_SHA" ]; then IMAGE_TAG="$(printf '%s' "$COMMIT_SHA" | cut -c1-8)" else REF_NAME="${CI_COMMIT_REF:-${CI_COMMIT_BRANCH:-manual}}" REF_NAME="${REF_NAME#refs/heads/}" REF_NAME="$(printf '%s' "$REF_NAME" | sed 's#[^A-Za-z0-9_.-]#-#g')" IMAGE_TAG="$(printf '%s' "${REF_NAME:-manual}-${CI_PIPELINE_NUMBER:-0}" | cut -c1-32)" fi export FRONTEND_IMAGE="git.cluster.lab.kemkas.hu/${CI_REPO}:${IMAGE_TAG}" export E2E_IMAGE="git.cluster.lab.kemkas.hu/${CI_REPO}-e2e:${IMAGE_TAG}" echo "Using image tag: $IMAGE_TAG" - docker login git.cluster.lab.kemkas.hu -u "$GITEA_PACKAGES_USERNAME" -p "$GITEA_PACKAGES_TOKEN" - | for i in $(seq 1 30); do if docker manifest inspect "$FRONTEND_IMAGE" >/dev/null 2>&1; then break fi if [ "$i" -eq 30 ]; then echo "Frontend image not available: $FRONTEND_IMAGE" exit 1 fi echo "Waiting for frontend image: $FRONTEND_IMAGE" sleep 10 done - trap 'docker compose -f e2e.docker-compose.yaml down -v --remove-orphans' EXIT - docker compose -f e2e.docker-compose.yaml pull - docker compose -f e2e.docker-compose.yaml up --no-build --abort-on-container-exit --exit-code-from e2e e2e