Arm64 support for SF releases (binary and images) - #26
Merged
sduchesneau merged 3 commits intoAug 12, 2026
Merged
Conversation
Splits sf_release.yml into prepare/build/manifest/release jobs so amd64 and arm64 build natively on separate runners and get merged into one multi-arch manifest, per PR #25. On top of that PR: pin the fireeth base by digest instead of a moving tag (the two arches build on separate runners and could otherwise embed different fireeth versions), assemble the manifest from digests instead of mutable per-arch tags, and add a concurrency guard, since a second run on the same ref could otherwise overwrite images the first run is still assembling. Also drop the bare-sha tag from tag pushes and the fireeth suffix from the version tag, both of which could be clobbered or malformed under those same races.
Silences "Node.js 20 is deprecated" warnings seen on the live test run: docker/login-action, docker/metadata-action, docker/build-push-action, actions/upload-artifact and actions/download-artifact all ship a node24 build starting at the versions bumped to here. No behavioral changes for how we use them (checked build-push-action's v7 changelog).
…from-pr--25-on-streamingfast-nitro # Conflicts: # CHANGELOG.sf.md
sduchesneau
deleted the
feature/start-from-pr--25-on-streamingfast-nitro
branch
August 12, 2026 18:42
This was referenced Aug 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.
Summary
Supersedes #25 — same goal (native
linux/amd64+linux/arm64release images and binaries, to support AWS Graviton), rebuilt on top of it with the sha/tag publish races fixed and verified against a live run.What changed vs #25
sf_release.ymlsplit intoprepare→build(matrix, native amd64/arm64 runners) →manifest→release, same as Arm64 Support for SF Releases (binary and images) #25's approach.concurrencyguard (queue, not cancel) so a re-run or a secondworkflow_dispatchon the same ref can't race the images a prior run is still assembling.prepareand passed to both matrix legs, so both architectures in a manifest are guaranteed to embed the same fireeth build (the two legs build on separate runners and previously resolvedFROMindependently).release/*branch head previously started two runs racing to publish the same sha tag.<version>-fireeth-<...>tag; verified the previous format was doubling the version (e.g.v3.11.2-fh3.0v3.11.2-fh3.0-fireeth-...) against every tag currently on the registry.docker/login-action,docker/metadata-action,docker/build-push-action,actions/upload-artifact,actions/download-artifactto their Node 24 releases.Makefilechange (ARCH ?= linux/amd64default) — nothing in this release pipeline callsmake docker, and defaulting local builds to amd64 would silently emulate on arm64 dev machines.Testing
Pushed this branch's commit as a throwaway
release/*branch to trigger a real run end-to-end: both matrix legs built and pushed, digests uploaded, manifest assembled and pushed. Confirmeddocker manifest inspecton the resulting tag shows bothamd64andarm64platforms. One transient GHCRunknown blobpush error on the first attempt, cleared on retry — registry flakiness, not a workflow bug. Test branch and run artifacts cleaned up after.Test plan
release/v3.x-fhand confirm a real branch push builds and publishes cleanlyreleasejob extracts bothnitro_linux_amd64andnitro_linux_arm64and attaches them to the GitHub release