Skip to content

ci(docker): build arm64 natively and publish a multi-arch manifest - #26

Open
DanielHabenicht wants to merge 1 commit into
rolandjitsu:mainfrom
DanielHabenicht:ci/multi-arch-docker-builds
Open

ci(docker): build arm64 natively and publish a multi-arch manifest#26
DanielHabenicht wants to merge 1 commit into
rolandjitsu:mainfrom
DanielHabenicht:ci/multi-arch-docker-builds

Conversation

@DanielHabenicht

Copy link
Copy Markdown

Add linux/arm64 alongside linux/amd64, each built on its own native runner (arm64 on ubuntu-24.04-arm) to avoid slow QEMU-emulated musl compiles. In release, each arch pushes to GHCR by digest and a merge job stitches them into one multi-arch manifest at : and :latest. The package breakage check builds both arches (no push) so arm64 breakage surfaces on the PR rather than at release.

What kind of change does this PR introduce?

  • fix
  • feat
  • refactor
  • perf
  • docs
  • test
  • build / ci
  • chore

Summary
Simply run the docker image on native arm machines without rebuilding from scratch.

Tests

  • Added / updated tests (unit, plus integration where it fits)
  • Not relevant, because: just a deployment change

Checklist

  • [-] CI is green locally: cargo fmt --all --check, cargo clippy --all-targets --all-features --locked -- -D warnings, cargo test --all-features
  • Commits follow Conventional Commits; AI-assisted commits carry an Assisted-by: trailer (see CONTRIBUTING.md / AGENTS.md)
  • Preserves the read-only, pull-only invariant (no push or proactive replication to upstream)
  • [-] Docs / README updated if behavior or flags changed

Breaking change?
No

Add linux/arm64 alongside linux/amd64, each built on its own native
runner (arm64 on ubuntu-24.04-arm) to avoid slow QEMU-emulated musl
compiles. In release, each arch pushes to GHCR by digest and a merge
job stitches them into one multi-arch manifest at :<version> and
:latest. The package breakage check builds both arches (no push) so
arm64 breakage surfaces on the PR rather than at release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@DanielHabenicht

Copy link
Copy Markdown
Author

I could not try out the release myself because I did not wanted to setup a github app just for this.

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