From 48be0aa195a455d5306cd363f389a10368b4dcbe Mon Sep 17 00:00:00 2001 From: Jarvis Date: Mon, 30 Mar 2026 20:12:23 -0500 Subject: [PATCH] =?UTF-8?q?fix(ci):=20separate=20publish=20pipeline=20?= =?UTF-8?q?=E2=80=94=20Docker=20builds=20independent=20of=20test=20failure?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/ci.yml | 56 ------------------------------ .woodpecker/publish.yml | 75 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 56 deletions(-) create mode 100644 .woodpecker/publish.yml diff --git a/.woodpecker/ci.yml b/.woodpecker/ci.yml index c1c3154..9a33a6e 100644 --- a/.woodpecker/ci.yml +++ b/.woodpecker/ci.yml @@ -58,59 +58,3 @@ steps: depends_on: - lint - format - - build-gateway: - image: gcr.io/kaniko-project/executor:debug - environment: - REGISTRY_USER: - from_secret: gitea_username - REGISTRY_PASS: - from_secret: gitea_password - CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH} - CI_COMMIT_TAG: ${CI_COMMIT_TAG} - CI_COMMIT_SHA: ${CI_COMMIT_SHA} - commands: - - mkdir -p /kaniko/.docker - - echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json - - | - DESTINATIONS="--destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:sha-${CI_COMMIT_SHA:0:7}" - if [ "$CI_COMMIT_BRANCH" = "main" ]; then - DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:latest" - fi - if [ -n "$CI_COMMIT_TAG" ]; then - DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:$CI_COMMIT_TAG" - fi - /kaniko/executor --context . --dockerfile docker/gateway.Dockerfile $DESTINATIONS - when: - - branch: [main] - event: [push, manual, tag] - depends_on: - - build - - build-web: - image: gcr.io/kaniko-project/executor:debug - environment: - REGISTRY_USER: - from_secret: gitea_username - REGISTRY_PASS: - from_secret: gitea_password - CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH} - CI_COMMIT_TAG: ${CI_COMMIT_TAG} - CI_COMMIT_SHA: ${CI_COMMIT_SHA} - commands: - - mkdir -p /kaniko/.docker - - echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json - - | - DESTINATIONS="--destination git.mosaicstack.dev/mosaic/mosaic-stack/web:sha-${CI_COMMIT_SHA:0:7}" - if [ "$CI_COMMIT_BRANCH" = "main" ]; then - DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/web:latest" - fi - if [ -n "$CI_COMMIT_TAG" ]; then - DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/web:$CI_COMMIT_TAG" - fi - /kaniko/executor --context . --dockerfile docker/web.Dockerfile $DESTINATIONS - when: - - branch: [main] - event: [push, manual, tag] - depends_on: - - build diff --git a/.woodpecker/publish.yml b/.woodpecker/publish.yml new file mode 100644 index 0000000..2723893 --- /dev/null +++ b/.woodpecker/publish.yml @@ -0,0 +1,75 @@ +# Docker image build and push — runs only on main branch push/tag +# Completely independent of the CI test pipeline + +variables: + - &node_image 'node:22-alpine' + - &enable_pnpm 'corepack enable' + +when: + - branch: [main] + event: [push, manual, tag] + +steps: + install: + image: *node_image + commands: + - corepack enable + - pnpm install --frozen-lockfile + + build: + image: *node_image + commands: + - *enable_pnpm + - pnpm build + depends_on: + - install + + build-gateway: + image: gcr.io/kaniko-project/executor:debug + environment: + REGISTRY_USER: + from_secret: gitea_username + REGISTRY_PASS: + from_secret: gitea_password + CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH} + CI_COMMIT_TAG: ${CI_COMMIT_TAG} + CI_COMMIT_SHA: ${CI_COMMIT_SHA} + commands: + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json + - | + DESTINATIONS="--destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:sha-${CI_COMMIT_SHA:0:7}" + if [ "$CI_COMMIT_BRANCH" = "main" ]; then + DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:latest" + fi + if [ -n "$CI_COMMIT_TAG" ]; then + DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/gateway:$CI_COMMIT_TAG" + fi + /kaniko/executor --context . --dockerfile docker/gateway.Dockerfile $DESTINATIONS + depends_on: + - build + + build-web: + image: gcr.io/kaniko-project/executor:debug + environment: + REGISTRY_USER: + from_secret: gitea_username + REGISTRY_PASS: + from_secret: gitea_password + CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH} + CI_COMMIT_TAG: ${CI_COMMIT_TAG} + CI_COMMIT_SHA: ${CI_COMMIT_SHA} + commands: + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json + - | + DESTINATIONS="--destination git.mosaicstack.dev/mosaic/mosaic-stack/web:sha-${CI_COMMIT_SHA:0:7}" + if [ "$CI_COMMIT_BRANCH" = "main" ]; then + DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/web:latest" + fi + if [ -n "$CI_COMMIT_TAG" ]; then + DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaic/mosaic-stack/web:$CI_COMMIT_TAG" + fi + /kaniko/executor --context . --dockerfile docker/web.Dockerfile $DESTINATIONS + depends_on: + - build