Skip to content

Arm64 support for SF releases (binary and images) - #26

Merged
sduchesneau merged 3 commits into
release/v3.x-fhfrom
feature/start-from-pr--25-on-streamingfast-nitro
Aug 12, 2026
Merged

Arm64 support for SF releases (binary and images)#26
sduchesneau merged 3 commits into
release/v3.x-fhfrom
feature/start-from-pr--25-on-streamingfast-nitro

Conversation

@maoueh

@maoueh maoueh commented Aug 12, 2026

Copy link
Copy Markdown

Summary

Supersedes #25 — same goal (native linux/amd64 + linux/arm64 release 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.yml split into preparebuild (matrix, native amd64/arm64 runners) → manifestrelease, same as Arm64 Support for SF Releases (binary and images) #25's approach.
  • Manifest is now assembled from content-addressed image digests exported by each matrix leg, not by re-reading the mutable per-arch tags — a concurrent run can no longer substitute a different image into a published manifest.
  • Added a concurrency guard (queue, not cancel) so a re-run or a second workflow_dispatch on the same ref can't race the images a prior run is still assembling.
  • Firehose Ethereum base is pinned by digest once in prepare and 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 resolved FROM independently).
  • Only branch builds publish the bare commit-sha tag now — a tag pushed on a release/* branch head previously started two runs racing to publish the same sha tag.
  • Removed the <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.
  • Registry login restored ahead of the fireeth digest lookup (was dropped in Arm64 Support for SF Releases (binary and images) #25's split, works today only because the default image is public).
  • Bumped docker/login-action, docker/metadata-action, docker/build-push-action, actions/upload-artifact, actions/download-artifact to their Node 24 releases.
  • Did not carry over Arm64 Support for SF Releases (binary and images) #25's Makefile change (ARCH ?= linux/amd64 default) — nothing in this release pipeline calls make 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. Confirmed docker manifest inspect on the resulting tag shows both amd64 and arm64 platforms. One transient GHCR unknown blob push error on the first attempt, cleared on retry — registry flakiness, not a workflow bug. Test branch and run artifacts cleaned up after.

Test plan

  • Merge to release/v3.x-fh and confirm a real branch push builds and publishes cleanly
  • Push a tag and confirm the release job extracts both nitro_linux_amd64 and nitro_linux_arm64 and attaches them to the GitHub release

maoueh added 3 commits August 12, 2026 09:49
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 sduchesneau left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@sduchesneau
sduchesneau merged commit 5992f87 into release/v3.x-fh Aug 12, 2026
2 checks passed
@sduchesneau
sduchesneau deleted the feature/start-from-pr--25-on-streamingfast-nitro branch August 12, 2026 18:42
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.

2 participants