Skip to content

ci: build x86_64-apple-darwin on Apple Silicon (macos-13 retired)#378

Open
sanity wants to merge 1 commit into
mainfrom
fix/riverctl-release-macos-runner
Open

ci: build x86_64-apple-darwin on Apple Silicon (macos-13 retired)#378
sanity wants to merge 1 commit into
mainfrom
fix/riverctl-release-macos-runner

Conversation

@sanity

@sanity sanity commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Problem

The first tagged release (riverctl-v0.1.72, run 28677460838) got stuck: verify + 3 of 4 binary builds (linux, arm64 macOS, windows) succeeded, but x86_64-apple-darwin on macos-13 sat queued ~11.5h — GitHub is retiring the Intel macos-13 runner and no longer allocates it.

No half-release occurred: publish-crates is gated on build-binaries, so the stuck Intel build correctly blocked the crates.io publish. Nothing was published under 0.1.72. (This validated the review's build-before-publish ordering.)

Fix

Build both macOS targets on macos-latest (Apple Silicon). x86_64-apple-darwin is cross-compiled from arm64 via the existing rustup target add + cargo build --target step — no native Intel runner needed. Keeps Intel-mac binary coverage.

Caveat

The release workflow only runs on tags, so PR CI does not exercise this cross-compile leg — it's first tested by the re-tagged run. It fails safe: if a dependency doesn't cross-compile to x86_64 from arm64, build-binaries fails and nothing publishes. Fallback if it fails: drop the x86_64-apple-darwin target (ship arm64 macOS + linux + windows) and add it back later.

To complete the release after merge

Re-point the (unconsumed) tag to the fixed commit:

git tag -d riverctl-v0.1.72 && git push origin :riverctl-v0.1.72
git tag riverctl-v0.1.72 <new main HEAD> && git push origin riverctl-v0.1.72

[AI-assisted - Claude]

The first tagged release (riverctl-v0.1.72) got stuck: verify + 3/4 binary
builds succeeded, but the x86_64-apple-darwin job sat queued ~11.5h because
GitHub is retiring the Intel `macos-13` runner and no longer allocates it.
crates.io was NOT published — publish-crates is gated on build-binaries, so
the stuck build correctly blocked the release (no half-release).

Fix: build BOTH macOS targets on `macos-latest` (Apple Silicon); x86_64 is
cross-compiled from arm64 via the existing `rustup target add` +
`cargo build --target` step. This removes the dependency on the retired Intel
runner while keeping Intel-mac binary coverage.

Note: the release workflow only runs on tags, so this cross-compile leg is
first exercised by the re-tagged run, not by PR CI. It fails safe — if a dep
doesn't cross-compile, build-binaries fails and nothing publishes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXwdRyFMf8Qfzx8RVp8FFF
@sanity sanity marked this pull request as ready for review July 4, 2026 06:14
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