From 26ec7a16e376e3831823f34eab91092db9aad053 Mon Sep 17 00:00:00 2001 From: morbalint Date: Sun, 16 Aug 2026 18:47:13 +0200 Subject: [PATCH 1/6] more robust commit sha retrieval --- .woodpecker/build-frontend.yaml | 14 ++++++++++++-- .woodpecker/e2e.yaml | 30 +++++++++++++++++++++++++----- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/.woodpecker/build-frontend.yaml b/.woodpecker/build-frontend.yaml index 11e71eb..062e9f8 100644 --- a/.woodpecker/build-frontend.yaml +++ b/.woodpecker/build-frontend.yaml @@ -6,8 +6,18 @@ steps: prepare-fe-image-tags: image: alpine:3.21 commands: - - SHORT_SHA="$(echo "$CI_COMMIT_SHA" | cut -c1-8)" - - printf '%s\n' "$SHORT_SHA" > .fe-tags + - | + 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 frontend image tag: $IMAGE_TAG" + printf '%s\n' "$IMAGE_TAG" > .fe-tags - printf '%s\n' "latest" >> .fe-tags build-and-push-fe-image: diff --git a/.woodpecker/e2e.yaml b/.woodpecker/e2e.yaml index 66172cd..f5f3fdd 100644 --- a/.woodpecker/e2e.yaml +++ b/.woodpecker/e2e.yaml @@ -6,8 +6,18 @@ steps: prepare-e2e-image-tags: image: alpine:3.21 commands: - - SHORT_SHA="$(echo "$CI_COMMIT_SHA" | cut -c1-8)" - - printf '%s\n' "$SHORT_SHA" > .e2e-tags + - | + 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: @@ -37,9 +47,19 @@ steps: GITEA_PACKAGES_TOKEN: from_secret: gitea_packages_token commands: - - SHORT_SHA="$(echo "$CI_COMMIT_SHA" | cut -c1-8)" - - export FRONTEND_IMAGE="git.cluster.lab.kemkas.hu/${CI_REPO}:${SHORT_SHA}" - - export E2E_IMAGE="git.cluster.lab.kemkas.hu/${CI_REPO}-e2e:${SHORT_SHA}" + - | + 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 -- 2.54.0 From 3c3055bce2de70fab9236ebc2e1e8cfb8784601d Mon Sep 17 00:00:00 2001 From: morbalint Date: Sun, 16 Aug 2026 21:06:46 +0200 Subject: [PATCH 2/6] merge docker build with e2e --- .woodpecker/{e2e.yaml => build-and-e2e.yaml} | 61 ++++++++++---------- .woodpecker/build-frontend.yaml | 37 ------------ 2 files changed, 29 insertions(+), 69 deletions(-) rename .woodpecker/{e2e.yaml => build-and-e2e.yaml} (56%) delete mode 100644 .woodpecker/build-frontend.yaml diff --git a/.woodpecker/e2e.yaml b/.woodpecker/build-and-e2e.yaml similarity index 56% rename from .woodpecker/e2e.yaml rename to .woodpecker/build-and-e2e.yaml index f5f3fdd..395ca83 100644 --- a/.woodpecker/e2e.yaml +++ b/.woodpecker/build-and-e2e.yaml @@ -1,9 +1,9 @@ when: - - event: [push, manual] + - event: [push, manual, pull_request] branch: [main] steps: - prepare-e2e-image-tags: + prepare-fe-image-tags: image: alpine:3.21 commands: - | @@ -16,15 +16,33 @@ steps: 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" + echo "Using frontend image tag: $IMAGE_TAG" + printf '%s\n' "$IMAGE_TAG" > .fe-tags + printf '%s\n' "latest" >> .fe-tags printf '%s\n' "$IMAGE_TAG" > .e2e-tags - - printf '%s\n' "latest" >> .e2e-tags + printf '%s\n' "latest" >> .e2e-tags + + build-and-push-fe-image: + image: docker.io/woodpeckerci/plugin-docker-buildx:latest + privileged: true + depends_on: + - prepare-fe-image-tags + settings: + registry: git.cluster.lab.kemkas.hu + repo: git.cluster.lab.kemkas.hu/${CI_REPO} + context: frontend + dockerfile: frontend/Dockerfile + tags_file: .fe-tags + username: + from_secret: gitea_packages_username + password: + from_secret: gitea_packages_token build-and-push-e2e-image: image: docker.io/woodpeckerci/plugin-docker-buildx:latest privileged: true depends_on: - - prepare-e2e-image-tags + - prepare-fe-image-tags settings: registry: git.cluster.lab.kemkas.hu repo: git.cluster.lab.kemkas.hu/${CI_REPO}-e2e @@ -40,6 +58,7 @@ steps: image: docker:28-cli privileged: true depends_on: + - build-and-push-fe-image - build-and-push-e2e-image environment: GITEA_PACKAGES_USERNAME: @@ -48,33 +67,11 @@ steps: 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 + IMAGE_TAG="$(head -n1 .fe-tags)" 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 \ No newline at end of file + docker login git.cluster.lab.kemkas.hu -u "$GITEA_PACKAGES_USERNAME" -p "$GITEA_PACKAGES_TOKEN" + 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 \ No newline at end of file diff --git a/.woodpecker/build-frontend.yaml b/.woodpecker/build-frontend.yaml deleted file mode 100644 index 062e9f8..0000000 --- a/.woodpecker/build-frontend.yaml +++ /dev/null @@ -1,37 +0,0 @@ -when: - - event: [push, manual] - branch: [main] - -steps: - prepare-fe-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 frontend image tag: $IMAGE_TAG" - printf '%s\n' "$IMAGE_TAG" > .fe-tags - - printf '%s\n' "latest" >> .fe-tags - - build-and-push-fe-image: - image: docker.io/woodpeckerci/plugin-docker-buildx:latest - privileged: true - depends_on: - - prepare-fe-image-tags - settings: - registry: git.cluster.lab.kemkas.hu - repo: git.cluster.lab.kemkas.hu/${CI_REPO} - context: frontend - dockerfile: frontend/Dockerfile - tags_file: .fe-tags - username: - from_secret: gitea_packages_username - password: - from_secret: gitea_packages_token \ No newline at end of file -- 2.54.0 From 1697ef14922f066927a9e9c6217f13f0c6838764 Mon Sep 17 00:00:00 2001 From: morbalint Date: Sun, 16 Aug 2026 21:41:10 +0200 Subject: [PATCH 3/6] [CI] add Docker in Docker as a service for E2E tests --- .woodpecker/build-and-e2e.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.woodpecker/build-and-e2e.yaml b/.woodpecker/build-and-e2e.yaml index 395ca83..7ba20dd 100644 --- a/.woodpecker/build-and-e2e.yaml +++ b/.woodpecker/build-and-e2e.yaml @@ -2,6 +2,13 @@ when: - event: [push, manual, pull_request] branch: [main] +services: + docker: + image: docker:28-dind + privileged: true + environment: + DOCKER_TLS_CERTDIR: "" + steps: prepare-fe-image-tags: image: alpine:3.21 @@ -61,6 +68,8 @@ steps: - build-and-push-fe-image - build-and-push-e2e-image environment: + DOCKER_HOST: tcp://localhost:2375 + DOCKER_TLS_CERTDIR: "" GITEA_PACKAGES_USERNAME: from_secret: gitea_packages_username GITEA_PACKAGES_TOKEN: @@ -74,4 +83,4 @@ steps: docker login git.cluster.lab.kemkas.hu -u "$GITEA_PACKAGES_USERNAME" -p "$GITEA_PACKAGES_TOKEN" 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 \ No newline at end of file + docker compose -f e2e.docker-compose.yaml up --no-build --abort-on-container-exit --exit-code-from e2e e2e -- 2.54.0 From 8e2e1c33c54f04e90ceaa4d8a669111dbbe26878 Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Fri, 21 Aug 2026 21:25:28 +0200 Subject: [PATCH 4/6] fix docker service pod name --- .woodpecker/build-and-e2e.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker/build-and-e2e.yaml b/.woodpecker/build-and-e2e.yaml index 7ba20dd..06f3812 100644 --- a/.woodpecker/build-and-e2e.yaml +++ b/.woodpecker/build-and-e2e.yaml @@ -68,7 +68,7 @@ steps: - build-and-push-fe-image - build-and-push-e2e-image environment: - DOCKER_HOST: tcp://localhost:2375 + DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" GITEA_PACKAGES_USERNAME: from_secret: gitea_packages_username -- 2.54.0 From 31e748ff54085e50b8be5cc48cb26844e2ff3142 Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Fri, 21 Aug 2026 21:34:42 +0200 Subject: [PATCH 5/6] fix image tag export syntax and refactor e2e image login process --- .woodpecker/build-and-e2e.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.woodpecker/build-and-e2e.yaml b/.woodpecker/build-and-e2e.yaml index 06f3812..06cd4dc 100644 --- a/.woodpecker/build-and-e2e.yaml +++ b/.woodpecker/build-and-e2e.yaml @@ -77,10 +77,10 @@ steps: commands: - | IMAGE_TAG="$(head -n1 .fe-tags)" - 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" + 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}" + printf '%s' "$${GITEA_PACKAGES_TOKEN}" | docker login git.cluster.lab.kemkas.hu -u "$${GITEA_PACKAGES_USERNAME}" --password-stdin 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 -- 2.54.0 From bbd962b092f3ca8f46fa4cb3c1dd4ecd0450dec3 Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Fri, 21 Aug 2026 22:17:02 +0200 Subject: [PATCH 6/6] fix ci e2e: login to ghcr.io --- .woodpecker/build-and-e2e.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.woodpecker/build-and-e2e.yaml b/.woodpecker/build-and-e2e.yaml index 06cd4dc..26a833c 100644 --- a/.woodpecker/build-and-e2e.yaml +++ b/.woodpecker/build-and-e2e.yaml @@ -74,6 +74,10 @@ steps: from_secret: gitea_packages_username GITEA_PACKAGES_TOKEN: from_secret: gitea_packages_token + GHCR_IO_REGISTRY_USERNAME: + from_secret: ghcr_io_registry_username + GHCR_IO_REGISTRY_TOKEN: + from_secret: ghcr_io_registry_token commands: - | IMAGE_TAG="$(head -n1 .fe-tags)" @@ -81,6 +85,7 @@ steps: export E2E_IMAGE="git.cluster.lab.kemkas.hu/${CI_REPO}-e2e:$${IMAGE_TAG}" echo "Using image tag: $${IMAGE_TAG}" printf '%s' "$${GITEA_PACKAGES_TOKEN}" | docker login git.cluster.lab.kemkas.hu -u "$${GITEA_PACKAGES_USERNAME}" --password-stdin + printf '%s' "$${GHCR_IO_REGISTRY_TOKEN}" | docker login ghcr.io -u "$${GHCR_IO_REGISTRY_USERNAME}" --password-stdin 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 -- 2.54.0