ci(release): build darwin/amd64 on macos-14, not the starved macos-13 - #285
Conversation
GitHub is winding down macos-13 (Intel) runners; the darwin/amd64 build job queued indefinitely on them, so the Create Release job never ran and no release ever published its assets (the Homebrew formula was stuck on a placeholder version as a result). The build is pure-Go with CGO disabled, so it cross-compiles on the Apple-Silicon runner; the smoke test runs the amd64 binary under Rosetta. Make the smoke test arch-aware so a future runner/emulation gap degrades to "verify the build, skip the run" instead of blocking the release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code ReviewOverviewThis PR fixes a legitimate production blocker: What works well
Concerns1. The fallback silently swallows real binary failuresif VERSION_OUT=$(./tinkerdown version 2>/dev/null); then
...
elif [ -x ./tinkerdown ]; then
echo "Built tinkerdown ($TARGET_ARCH) is not runnable on this runner; skipping execution smoke test."
else
exit 1
fiThe Suggestion: distinguish the two failure modes explicitly. On HOST_ARCH=$(uname -m) # arm64 on macos-14
if [ "$HOST_ARCH" = "$TARGET_ARCH" ] || [ "$TARGET_ARCH" = "amd64" -a "$HOST_ARCH" = "arm64" ]; then
# Native run, or amd64 under Rosetta on Apple Silicon — should work.
VERSION_OUT=$(./tinkerdown version)
echo "$VERSION_OUT"
echo "$VERSION_OUT" | grep -Fq "$EXPECTED_VERSION"
./tinkerdown help
else
echo "Runner arch ($HOST_ARCH) cannot execute $TARGET_ARCH binary; confirming executable bit and skipping run."
[ -x ./tinkerdown ]
fiThis makes the fallback path intentional rather than a catch-all for any failure. 2.
|
The earlier arch-aware fallback skipped on any non-zero exit, which would also swallow a crash or wrong-version binary. Every matrix target is runnable on its runner (arm64 native, amd64 via Rosetta on macos-14, linux native), so require the binary to run and match the expected version — a failure is a real problem and should fail loudly, not publish silently. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Problem
The CLI release workflow's
darwin/amd64build runs onmacos-13. GitHub is winding down Intel macOS runners, so that job sits queued indefinitely — and since theCreate Releasejobneedsall three builds, no release ever publishes its assets. That's whylivetemplate/homebrew-tap's formula has been stuck on a placeholder version: there were never any release artifacts to point it at. (Observed live on the v0.3.3 release:darwin-arm64+linux-amd64finished in seconds,darwin-amd64queued 30+ min onmacos-13.)Fix
darwin/amd64onmacos-14(Apple Silicon). The build is pure Go withCGO_ENABLED=0, so it cross-compiles cleanly; the smoke test runs the amd64 binary under Rosetta, which is preinstalled on themacos-14image.No release behaviour changes for the platforms that already worked; this only removes the dependency on the deprecated runner.
🤖 Generated with Claude Code