Skip to content

ci: publish linux/arm64 Docker images - #6

Merged
etwk merged 1 commit into
mainfrom
ci/arm64-images
Oct 21, 2026
Merged

etwk merged 1 commit into
mainfrom
ci/arm64-images

Conversation

@etwk

@etwk etwk commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Dockerfile: the build stage runs on $BUILDPLATFORM and cross-compiles with GOOS=$TARGETOS GOARCH=$TARGETARCH. The runtime stage (distroless/static) only copies files, so multi-arch builds need no QEMU.
  • docker-publish.yml: publishes a linux/amd64,linux/arm64 manifest list. Tag rules are unchanged (main → latest + sha-<commit>; releases → <tag> + sha-<commit>).
  • ci.yml: the docker job builds both platforms with buildx (no push), so arm64 breakage fails the PR instead of publishing.
  • README / RELEASING: list amd64 and arm64.

arm64 matches the existing linux_arm64 release archive; 32-bit arm/v7 is out of scope.

Verification

  • actionlint clean.
  • Local buildx docker-container build of both platforms: one compile stage on the amd64 host (linux/amd64->arm64). In the OCI index, both platforms' steady-proxy and testupstream have matching ELF machine types (0x3e / 0xb7) and GOARCH, CGO_ENABLED=0, embedded commit, nonroot:nonroot, and entrypoint /steady-proxy.
  • Default docker build .: the image prints the correct --version and serves /__version; docker compose -f docker-compose.test.yml config -q passes.

Note

Local builds now need BuildKit, the default since Docker Engine 23 and always used by Compose v2. The legacy builder (DOCKER_BUILDKIT=0) fails on FROM --platform=$BUILDPLATFORM.

Cross-compile in the build stage on $BUILDPLATFORM so multi-arch builds need no emulation, publish linux/amd64 and linux/arm64 to GHCR, and build both platforms in the CI docker job.
@etwk
etwk merged commit 6b72508 into main Oct 21, 2026
2 checks passed
@etwk
etwk deleted the ci/arm64-images branch October 21, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant