Skip to content

Commit 45f78bf

Browse files
Mossakaclaude
andauthored
feat: add ARM64 multi-architecture container builds (#869)
Publish multi-arch (amd64 + arm64) container images to GHCR so that gh-aw-firewall works on ARM64 self-hosted runners. Changes to release.yml: - Add QEMU setup step for arm64 emulation via binfmt_misc - Add `platforms: linux/amd64,linux/arm64` to squid, agent, and api-proxy builds - Scope GHA caches per image to prevent cross-image cache collisions - Keep agent-act as amd64-only (catthehacker/ubuntu:act-24.04 has no arm64 manifest) No Dockerfile changes needed — all base images already publish arm64 manifests. Closes github/gh-aw#16005 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2d90521 commit 45f78bf

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

.github/workflows/release.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ jobs:
5656
- name: Set up Docker Buildx
5757
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
5858

59+
- name: Set up QEMU
60+
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
61+
with:
62+
platforms: arm64
63+
5964
- name: Install cosign
6065
uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0
6166

@@ -65,11 +70,12 @@ jobs:
6570
with:
6671
context: ./containers/squid
6772
push: true
73+
platforms: linux/amd64,linux/arm64
6874
tags: |
6975
ghcr.io/${{ github.repository }}/squid:${{ steps.version_early.outputs.version_number }}
7076
ghcr.io/${{ github.repository }}/squid:latest
71-
cache-from: type=gha
72-
cache-to: type=gha,mode=max
77+
cache-from: type=gha,scope=squid
78+
cache-to: type=gha,mode=max,scope=squid
7379

7480
- name: Sign Squid image with cosign
7581
run: |
@@ -96,6 +102,7 @@ jobs:
96102
with:
97103
context: ./containers/agent
98104
push: true
105+
platforms: linux/amd64,linux/arm64
99106
tags: |
100107
ghcr.io/${{ github.repository }}/agent:${{ steps.version_early.outputs.version_number }}
101108
ghcr.io/${{ github.repository }}/agent:latest
@@ -128,11 +135,12 @@ jobs:
128135
with:
129136
context: ./containers/api-proxy
130137
push: true
138+
platforms: linux/amd64,linux/arm64
131139
tags: |
132140
ghcr.io/${{ github.repository }}/api-proxy:${{ steps.version_early.outputs.version_number }}
133141
ghcr.io/${{ github.repository }}/api-proxy:latest
134-
cache-from: type=gha
135-
cache-to: type=gha,mode=max
142+
cache-from: type=gha,scope=api-proxy
143+
cache-to: type=gha,mode=max,scope=api-proxy
136144

137145
- name: Sign API Proxy image with cosign
138146
run: |
@@ -154,12 +162,14 @@ jobs:
154162
ghcr.io/${{ github.repository }}/api-proxy@${{ steps.build_api_proxy.outputs.digest }}
155163
156164
# Build agent-act image with catthehacker/ubuntu:act-24.04 base for GitHub Actions parity
165+
# amd64-only: catthehacker/ubuntu:act-24.04 does not publish arm64 manifests
157166
- name: Build and push Agent-Act image
158167
id: build_agent_act
159168
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
160169
with:
161170
context: ./containers/agent
162171
push: true
172+
platforms: linux/amd64
163173
tags: |
164174
ghcr.io/${{ github.repository }}/agent-act:${{ steps.version_early.outputs.version_number }}
165175
ghcr.io/${{ github.repository }}/agent-act:latest

0 commit comments

Comments
 (0)