Repository navigation
ci(release): build multi-arch docker images in the tag pipeline - #2139
Merged
Merged
Conversation
nullPointerEnjoyer
requested review from
ImplOfAnImpl,
anyxem and
erubboli
as code owners
October 12, 2026 09:56
|
🔍 OpenCodeReview found 2 issue(s) in this PR.
📄
|
erubboli
approved these changes
Oct 12, 2026
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.
What
The tag pipeline (
release.yml) now produces multi-arch Docker images: it callsrelease_docker.ymltwice (amd64 on the default runner, arm64 natively onubuntu-24.04-armwithtag_suffix: arm64) and then assembles multi-arch manifest lists under the unsuffixed tags — no manual dispatches needed for a release.How
release.ymlreplaces the singlebuild-dockercall withbuild-docker-amd64,build-docker-arm64, andassemble-docker(assemblyneeds:both builds, runsassemble_manifests: truewith the tag name as version).release_docker.ymldeclares its five inputs on theworkflow_calltrigger (previously inputs were dispatch-only, so caller-passed values would silently arrive empty), and both job gates are now purely ref-based: a called workflow inherits the caller's ref, so tag-pipeline calls pass the same protected-ref checks as manual dispatches. Any tag ref qualifies (release.yml's glob accepts bareX.Y.Zas well asvX.Y.Z; the grammar is validated and a leadingvstripped before anything is pushed).create-releasedeliberately does not depend on the arm64 build or the assembly. If either fails, the OS binaries and amd64 images still release; the arm64 half can be repaired by re-running the failed jobs or dispatchingrelease_docker.ymlfrom the tag ref.docker-releasegroup; within one release run at most one job is ever pending in the group, so a single run cannot drop its own legs (the cross-run one-pending-slot caveat is documented on the build job).Verification
with, and a behavior matrix of both job gates (tag/release/master refs build or assemble; feature branches and PR refs are skipped for both).runblocks passbash -n.do_checks.shexit 0; OCR review of the commit to 0 findings (the loop caught and fixed a silent no-op for bare-semver tags, an over-broad workflow_call bypass, and a comment overclaiming cancellation safety).