Skip to content

Publish the release image for arm64 as well as amd64 - #24

Merged
bricke merged 2 commits into
mainfrom
ci/arm64-image
Oct 9, 2026
Merged

bricke merged 2 commits into
mainfrom
ci/arm64-image

Conversation

@bricke

@bricke bricke commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Fixes #23.

.github/workflows/release.yml now builds each platform on its own native runner (ubuntu-latest for linux/amd64, ubuntu-24.04-arm for linux/arm64), so there's no emulation:

  • build: one job per platform builds the image and smoke-tests it. The smoke test now also runs switchyard-server --version, so a binary that can't run on the runner's CPU fails the build. On a release, the job pushes its image by digest.
  • merge (releases only): joins the two digests into one multi-platform image tagged <version>, <major.minor> and latest, as before.
  • Build caches are kept separately per platform. A manual run still builds and tests without pushing, now on any branch.

The Dockerfile is unchanged. docs/install.md lists both platforms and the CPUs they need (AVX2 on amd64, Neoverse N1 or newer on arm64, the same as Switchyard's own builds). docs/development.md describes the two-platform release.

Tested

Manual run on this branch: https://github.com/bricke/YardMaster/actions/runs/37997792268

  • linux/amd64: built and smoke-tested in 5m08s (yardmaster dev-7c2f3cf…, switchyard-server 0.3.0)
  • linux/arm64: built and smoke-tested in 4m35s (same output)

The push and merge steps run only on a published release, so they haven't run yet. The next release will be the first to exercise them.

bricke added 2 commits October 9, 2026 15:10
The published image ran only on amd64, so it couldn't be installed on
arm64 hosts such as a DGX Spark. Switchyard's own build already targets
aarch64 (target-cpu=neoverse-n1) and every base image is multi-platform,
so the Dockerfile needs no change.

The release workflow now builds and smoke-tests each platform on its own
native runner, with no emulation, pushes each by digest and joins them
into one multi-platform tag. The smoke test also runs switchyard-server
--version, so a binary that can't run on the runner's CPU fails the build.
A manual run of the release workflow builds and smoke-tests both platforms
but threw the images away. Saving each as a one-day artifact lets a branch
be tried on real hardware, such as an arm64 board, before it's released.
@bricke
bricke merged commit ef2d4b0 into main Oct 9, 2026
6 checks passed
@bricke
bricke deleted the ci/arm64-image branch October 9, 2026 22:33
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.

Publish the image for arm64

1 participant