Build multi-arch image on native runners - #57
Merged
Conversation
Replace the single QEMU-emulated build with a matrix that builds each architecture on its own native runner (ubuntu-24.04 for amd64, ubuntu-24.04-arm for arm64), pushes each by digest with zstd compression, then assembles the manifest list in a merge job. This drops slow arm64 emulation. The bktools content hash is now computed in a dedicated version job and consumed by the merge job when it tags the manifest list. Trigger, registry, tag scheme and IAM role are unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adapts the improved multi-arch container build/upload approach from the
randomsecretproject.What changed
Replaces the single
ubuntu-latestjob that built both architectures via QEMU emulation (slow arm64) with three jobs and no emulation:version— installs bktools and computes the content-hash image tag, exposing it as a job output.build— a matrix that builds each arch on its own native runner (ubuntu-24.04for amd64,ubuntu-24.04-armfor arm64), pushing each by digest with zstd compression.merge— assembles the two digests into a single manifest list tagged with the content hash viadocker buildx imagetools create.Unchanged
main+workflow_dispatchbktools-image-version-hashcontent hashpublic.ecr.aws/q3z6g1h3/idcatidcat-ecr-publishThe
Dockerfileneeds no changes — each matrix runner builds natively for its own platform.🤖 Generated with Claude Code