From e6e85f77baab4fc4a605c783c865c41b2b274ec4 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 11 Aug 2026 17:41:49 +0200 Subject: [PATCH 1/4] ci: publish multi-arch container images --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a9a8b02..30b6698 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -26,6 +26,6 @@ jobs: uses: docker/build-push-action@v5 with: context: . - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/polinetworkorg/web:latest From 5412f888d9b8bfe4fe5e10568ca1ffc58b79ad2b Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 11 Aug 2026 17:55:17 +0200 Subject: [PATCH 2/4] ci: build web on native architecture runners --- .github/workflows/docker.yml | 42 ++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 30b6698..8809e99 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -9,23 +9,51 @@ on: jobs: build: - name: Build - runs-on: ubuntu-latest + name: Build ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + include: + - platform: linux/amd64 + runner: ubuntu-latest + suffix: amd64 + - platform: linux/arm64 + runner: ubuntu-24.04-arm + suffix: arm64 + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v2 + - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build the Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . - platforms: linux/amd64,linux/arm64 + platforms: ${{ matrix.platform }} push: true - tags: ghcr.io/polinetworkorg/web:latest + tags: ghcr.io/polinetworkorg/web:build-${{ github.sha }}-${{ matrix.suffix }} + + manifest: + name: Publish multi-arch manifest + needs: build + runs-on: ubuntu-latest + steps: + - uses: docker/setup-buildx-action@v3 + - uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Publish latest manifest + run: | + docker buildx imagetools create \ + --tag ghcr.io/polinetworkorg/web:latest \ + ghcr.io/polinetworkorg/web:build-${{ github.sha }}-amd64 \ + ghcr.io/polinetworkorg/web:build-${{ github.sha }}-arm64 + docker buildx imagetools inspect ghcr.io/polinetworkorg/web:latest From 597a42a005511d0f6dc166809358834a2a1a839f Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 11 Aug 2026 18:09:10 +0200 Subject: [PATCH 3/4] ci: publish images only after main updates --- .github/workflows/docker.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8809e99..0130492 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,15 +1,14 @@ name: Docker Image CI on: - workflow_dispatch: - workflow_run: - workflows: [Test] + push: branches: [main] - types: - - completed jobs: build: name: Build ${{ matrix.platform }} + permissions: + contents: read + packages: write strategy: fail-fast: false matrix: @@ -43,6 +42,9 @@ jobs: name: Publish multi-arch manifest needs: build runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 From 7fedbd5c0ae3ef7463d2b3a6eb615a899252e91f Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 11 Aug 2026 18:29:36 +0200 Subject: [PATCH 4/4] ci: serialize container publication --- .github/workflows/docker.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0130492..07ec7bb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,6 +3,10 @@ on: push: branches: [main] +concurrency: + group: docker-publish-${{ github.ref }} + cancel-in-progress: true + jobs: build: name: Build ${{ matrix.platform }}