From 29b6b442bf3f283dacf5c4181f1a3ed55188b0c7 Mon Sep 17 00:00:00 2001 From: steve-w Date: Mon, 6 Apr 2026 20:14:36 +0000 Subject: [PATCH 1/5] Push Docker image to Gitea registry in CI --- .gitea/workflows/ci.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index b394709..2795139 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -8,6 +8,10 @@ on: - fix-validation-issues pull_request: +env: + REGISTRY: git.danhenry.dev + IMAGE_NAME: thelab/shopping-list-api + jobs: test: runs-on: ubuntu-latest @@ -29,12 +33,25 @@ jobs: - name: Run tests run: uv run pytest - docker-build: + docker-push: runs-on: ubuntu-latest needs: test + if: gitea.event_name == 'push' steps: - name: Checkout uses: actions/checkout@v4 + - name: Log in to Gitea container registry + run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin + - name: Build Docker image - run: docker build -t shopping-list-api:${{ gitea.sha }} . + run: | + docker build \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.ref_name }} \ + . + + - name: Push Docker image + run: | + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.ref_name }} From 527be2053658b32707a30ef73cbb47585c1872cd Mon Sep 17 00:00:00 2001 From: steve-w Date: Tue, 7 Apr 2026 04:17:37 +0000 Subject: [PATCH 2/5] Push multi-arch images to Gitea registry --- .gitea/workflows/ci.yml | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 2795139..89db752 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -9,8 +9,9 @@ on: pull_request: env: - REGISTRY: git.danhenry.dev - IMAGE_NAME: thelab/shopping-list-api + REGISTRY: git.danhenry.dev:5050 + IMAGE_NAME: TheLab/shopping-list-api + CACHE_REF: git.danhenry.dev:5050/TheLab/shopping-list-api:latest jobs: test: @@ -41,17 +42,24 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Gitea container registry - run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} - - name: Build Docker image - run: | - docker build \ - -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} \ - -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.ref_name }} \ - . - - - name: Push Docker image - run: | - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.ref_name }} + - name: Build and push multi-arch image + uses: docker/build-push-action@v6 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64 + tags: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + cache-from: type=registry,ref=${{ env.CACHE_REF }} + cache-to: type=registry,ref=${{ env.CACHE_REF }},mode=max From de179112590b8c1b3d26330820c66e57c6dcc80b Mon Sep 17 00:00:00 2001 From: steve-w Date: Tue, 7 Apr 2026 04:19:58 +0000 Subject: [PATCH 3/5] Use org-level Docker registry secrets in CI --- .gitea/workflows/ci.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 89db752..2c83f65 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -8,11 +8,6 @@ on: - fix-validation-issues pull_request: -env: - REGISTRY: git.danhenry.dev:5050 - IMAGE_NAME: TheLab/shopping-list-api - CACHE_REF: git.danhenry.dev:5050/TheLab/shopping-list-api:latest - jobs: test: runs-on: ubuntu-latest @@ -48,9 +43,9 @@ jobs: - name: Log in to Gitea container registry uses: docker/login-action@v3 with: - registry: ${{ env.REGISTRY }} - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} + registry: ${{ secrets.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push multi-arch image uses: docker/build-push-action@v6 @@ -59,7 +54,7 @@ jobs: push: true platforms: linux/amd64,linux/arm64 tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - cache-from: type=registry,ref=${{ env.CACHE_REF }} - cache-to: type=registry,ref=${{ env.CACHE_REF }},mode=max + ${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:${{ gitea.sha }} + ${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest + cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest + cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest,mode=max From 9252f566d9ef156ee2a9f9ef5f6a0e0991aeb3c7 Mon Sep 17 00:00:00 2001 From: steve-w Date: Tue, 7 Apr 2026 04:27:34 +0000 Subject: [PATCH 4/5] Add QEMU setup for multi-arch Docker builds --- .gitea/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 2c83f65..5e82284 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -37,6 +37,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 From 847455da339c10c59ffb5ce3a9acd0b977c10879 Mon Sep 17 00:00:00 2001 From: "Marcus A." Date: Tue, 7 Apr 2026 05:13:42 +0000 Subject: [PATCH 5/5] Fix: use lowercase repository name for Docker tags and cache refs; compute image via meta step --- .gitea/workflows/ci.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 5e82284..af6dcd3 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -43,10 +43,16 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Set image name (lowercase) + id: meta + run: | + IMAGE="${{ secrets.DOCKER_REGISTRY }}/${{ toLower(gitea.repository) }}" + echo "image=${IMAGE}" >> "$GITHUB_OUTPUT" + - name: Log in to Gitea container registry uses: docker/login-action@v3 with: - registry: ${{ secrets.DOCKER_REGISTRY }} + registry: ${{ steps.meta.outputs.image }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} @@ -57,7 +63,7 @@ jobs: push: true platforms: linux/amd64,linux/arm64 tags: | - ${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:${{ gitea.sha }} - ${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest - cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest - cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/TheLab/shopping-list-api:latest,mode=max + ${{ steps.meta.outputs.image }}:${{ gitea.sha }} + ${{ steps.meta.outputs.image }}:latest + cache-from: type=registry,ref=${{ steps.meta.outputs.image }}:latest + cache-to: type=registry,ref=${{ steps.meta.outputs.image }}:latest,mode=max