Run the macOS binaries job on macos-latest-xlarge - #128
Bencheng21 wants to merge 1 commit into
Conversation
macos-latest has 3 vCPUs and GoReleaser sizes its build semaphore from runtime.GOMAXPROCS(0), so the fourth darwin target queues behind the first three. macos-latest-xlarge is a 6-core M1, so all four build at once. goreleaser-binaries wall-clock in baton-github-test, successful runs only: macos-latest-xlarge n= 2 avg 3.99 min macos-latest n=34 avg 5.29 min Same Apple Silicon architecture as the current macos-latest, so the codesigning host and Homebrew prefix are unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
| goreleaser-binaries: | ||
| needs: [determine-workflows-ref, release-preflight] | ||
| runs-on: macos-latest | ||
| runs-on: macos-latest-xlarge |
There was a problem hiding this comment.
1. Bottleneck
I identified goreleaser-binaries as the main bottleneck in our release workflow.
Analysis:
https://claude.ai/code/artifact/8b700e89-d49e-41db-91bd-139c8577dcee?sk=YU2Rq3X6EflpQra5Bv9I4Q
2. Current Runner Limitation
The current runner has 3 cores, but we're building 4 binaries in parallel. This means one of the builds has to wait for a core to become available, depending on which of the other builds finishes first.
macos-latest-xlarge has 5 cores, so all four binary builds should be able to run in parallel without competing for CPU cores.
3. Expected Benefits
Based on my testing, upgrading the runner could reduce the overall release time by approximately 18.2%–35%, depending on the connector.
For example, for baton-servicenow:
goreleaser-binaries: 7m 30s → 5m 24s- Total release time: 11m 45s → 9m 40s
- Overall improvement: approximately 18.2%
Workflow run:
https://github.com/ConductorOne/baton-servicenow/actions/runs/35888202348
I expect baton-datadog to see an even more significant improvement because its binary build is currently a larger portion of the overall release time.
4. Cost
Based on our current GitHub Actions usage:
I estimate that the annual cost would increase from approximately $270 to $870 ( from Jan 2026- present ), which works out to roughly $70/month for the upgraded runner.
Overall, we'd be spending roughly $900 more per year in exchange for an estimated 18%–35% reduction in release time.
One line: run
goreleaser-binariesonmacos-latest-xlarge.macos-latesthas 3 vCPUs and GoReleaser sizes its build semaphore fromruntime.GOMAXPROCS(0), so the fourth darwin target queues behind the firstthree.
macos-latest-xlargeis a 6-core M1, so all four build at once.Measurements
goreleaser-binarieswall-clock inbaton-github-test, successful runs only:macos-latest-xlargemacos-latest(current)macos-latest-large(Intel)macos-26-intel~24% faster. Both Intel tiers are worse than the standard runner.
Why this is safe
macos-latest-xlargeis Apple Silicon, the same architecture asmacos-latesttoday. The codesigning host and Homebrew prefix are unchanged — that was the
concern with the Intel
macos-latest-largelabel, not this one. The label hasalready run green twice in
baton-github-test.Cost
This is not free. Larger runners get no free-minutes allowance on public repos,
so the 77% of macOS release minutes that currently cost nothing become billable.
From the August usage report, org-wide
release.yaml:macos-latestmacos-latest-xlarge@ $0.16/mingoreleaser-binariesis 40% of goreleaser wall-time but 84% of its cost, beingthe only job on macOS. Worth weighing against the ~1.3 min/release saved.
Blast radius
All 244 baton repos pin
@v4. This reaches them only when the floatingv4tag is moved to a release containing it — a separate, deliberate step.
🤖 Generated with Claude Code