From 14e816241df2d361446ccbbcd1a3e412b3e87a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Wed, 4 Mar 2026 18:53:16 +0100 Subject: [PATCH] ci: split frontend and backend into separate jobs to fix image tag mix-up Both builds in the same job shared the same docker buildx instance, causing the backend image to be incorrectly tagged with the frontend image. Separate jobs get isolated buildx instances and separate build caches. Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/docker-build-push.yml | 71 ++++++++++++-------------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/.gitea/workflows/docker-build-push.yml b/.gitea/workflows/docker-build-push.yml index 61e3520..1275cb5 100644 --- a/.gitea/workflows/docker-build-push.yml +++ b/.gitea/workflows/docker-build-push.yml @@ -23,7 +23,7 @@ env: BACKEND_IMAGE_NAME: valknar/sexy-backend jobs: - build-and-push: + build-frontend: runs-on: ubuntu-latest steps: @@ -48,23 +48,17 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | - # Tag as 'latest' for main branch type=raw,value=latest,enable={{is_default_branch}} - # Tag with branch name type=ref,event=branch - # Tag with PR number type=ref,event=pr - # Tag with git tag (semver) type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} - # Tag with commit SHA type=sha,prefix={{branch}}- - # Custom tag from workflow_dispatch type=raw,value=${{ gitea.event.inputs.tag }},enable=${{ gitea.event_name == 'workflow_dispatch' }} labels: | org.opencontainers.image.title=sexy.pivoine.art - org.opencontainers.image.description=Adult content platform with SvelteKit, Directus, and hardware integration + org.opencontainers.image.description=Adult content platform frontend (SvelteKit) org.opencontainers.image.vendor=valknar org.opencontainers.image.source=https://dev.pivoine.art/${{ gitea.repository }} @@ -83,6 +77,35 @@ jobs: NODE_ENV=production CI=true + - name: Generate image digest + if: gitea.event_name != 'pull_request' + run: | + echo "### Frontend Image Published :rocket:" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Registry:** \`${{ env.REGISTRY }}\`" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + + build-backend: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64 + + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.REGISTRY_TOKEN }} + - name: Extract metadata for backend image id: meta-backend uses: docker/metadata-action@v5 @@ -121,39 +144,9 @@ jobs: - name: Generate image digest if: gitea.event_name != 'pull_request' run: | - echo "### Docker Images Published :rocket:" >> $GITEA_STEP_SUMMARY + echo "### Backend Image Published :rocket:" >> $GITEA_STEP_SUMMARY echo "" >> $GITEA_STEP_SUMMARY echo "**Registry:** \`${{ env.REGISTRY }}\`" >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "**Frontend (\`${{ env.IMAGE_NAME }}\`):**" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "${{ steps.meta.outputs.tags }}" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "**Backend (\`${{ env.BACKEND_IMAGE_NAME }}\`):**" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "${{ steps.meta-backend.outputs.tags }}" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "**Pull commands:**" >> $GITEA_STEP_SUMMARY - echo "\`\`\`bash" >> $GITEA_STEP_SUMMARY - echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> $GITEA_STEP_SUMMARY - echo "docker pull ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE_NAME }}:latest" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - - - name: PR Comment - Images built but not pushed - if: gitea.event_name == 'pull_request' - run: | - echo "### Docker Images Built Successfully :white_check_mark:" >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "Images were built successfully but **not pushed** (PR builds are not published)." >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "**Frontend would be tagged as:**" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "${{ steps.meta.outputs.tags }}" >> $GITEA_STEP_SUMMARY - echo "\`\`\`" >> $GITEA_STEP_SUMMARY - echo "" >> $GITEA_STEP_SUMMARY - echo "**Backend would be tagged as:**" >> $GITEA_STEP_SUMMARY echo "\`\`\`" >> $GITEA_STEP_SUMMARY echo "${{ steps.meta-backend.outputs.tags }}" >> $GITEA_STEP_SUMMARY echo "\`\`\`" >> $GITEA_STEP_SUMMARY