Skip to content

ci: run linux/arm64 natively instead of only cross-compiling it - #5

Merged
rldyourmnd merged 1 commit into
mainfrom
ci/cover-linux-arm64
Aug 23, 2026
Merged

ci: run linux/arm64 natively instead of only cross-compiling it#5
rldyourmnd merged 1 commit into
mainfrom
ci/cover-linux-arm64

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

docs/releasing.md and release.yml build four targets:

for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64; do

The test matrix covered two systems. Because macos-latest is Apple Silicon, that meant:

target covered before
linux/amd64 yes — ubuntu-latest
darwin/arm64 yes — macos-latest
linux/arm64 no — cross-compiled at release, never run
darwin/amd64 no

ubuntu-24.04-arm is a standard hosted runner and unmetered on public repositories, so the third row costs nothing. Matrix jobs run in parallel, so wall-clock is unchanged.

darwin/amd64 stays uncovered

It needs macos-13, the last Intel image, whose retirement is already announced. A lane on a runner being withdrawn buys a signal that expires. The real choice there is whether that target is still worth shipping.

Precedent

The same gap was closed in github-device-sync this week — NDDev-OpenNetwork/github-device-sync#27 — where both new lanes passed on their first run, ubuntu-24.04-arm in 109s and macos-latest in 273s.

Safety of the change

Gate is the only required status context here, so the added matrix entry introduces no new required check and nothing was pinned to the existing Test (…) names.

Verification

Locally on linux/amd64: go vet ./... clean, go test -race ./... every package ok. actionlint 1.7.12 clean. The arm64 lane itself has never run here; if it goes red, that is the finding.

`docs/releasing.md` and `release.yml` build four targets — linux/amd64,
linux/arm64, darwin/amd64, darwin/arm64. The test matrix covered two systems,
and because `macos-latest` is Apple Silicon that meant linux/amd64 and
darwin/arm64 ran while linux/arm64 was only ever cross-compiled at release time.

`ubuntu-24.04-arm` is a standard hosted runner, unmetered on public
repositories, so covering it costs nothing. Jobs in the matrix run in parallel,
so wall-clock is unchanged.

darwin/amd64 remains uncovered: it needs `macos-13`, the last Intel image, whose
retirement is already announced. Adding a lane on a runner being withdrawn buys
a signal that expires; the alternative is to stop shipping that target.

The same gap was closed in `github-device-sync` this week
(NDDev-OpenNetwork/github-device-sync#27), where both new lanes passed on their
first run — `ubuntu-24.04-arm` in 109s.

`Gate` is the only required status context here, so the added matrix entry
introduces no new required check and nothing was pinned to the old names.

Verified locally on linux/amd64: `go vet ./...` clean, `go test -race ./...`
every package ok, actionlint 1.7.12 clean.
@rldyourmnd
rldyourmnd merged commit 429ecf0 into main Aug 23, 2026
8 checks passed
@rldyourmnd
rldyourmnd deleted the ci/cover-linux-arm64 branch August 23, 2026 23:19
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.

1 participant