Skip to content

Run macOS on main only, and release only what main proved - #52

Merged
Mpdreamz merged 1 commit into
mainfrom
ci/macos-main-gate
Nov 12, 2026
Merged

Mpdreamz merged 1 commit into
mainfrom
ci/macos-main-gate

Conversation

@Mpdreamz

Copy link
Copy Markdown
Contributor

Takes macOS off pull requests and off the release path, except the osx-arm64 AOT pack, and makes every release wait for main's green CI run on the released commit before it builds, packs or pushes anything.

Prompt summary: Take macOS off pull requests and the release path, since those runners are severely constrained, and make every release check that main is green first.

What

  • main-green, the first release job, waits up to 60 minutes for main's ci.yml push run on the released commit (nullean/.github/actions/require-green-main v1.6.0) and fails unless it succeeded.
  • aot-pack runs linux-x64 only on pull requests, as before. Each leg still runs smokeaot against GitHub, osx-arm64 included, on push and release. A push to main and a release run all five RIDs, and osx-arm64 is the one macOS job a release runs. workflow_dispatch packs the four RIDs that don't need macOS.
  • aot-pack and build need main-green. Their if: uses !cancelled() so they still run on the other events, where main-green is skipped. On a release, build (which packs, validates, pushes the container and publishes to nuget.org) skips only the curb format check, which main's run already did.
  • create-major-tag.yml gets its own main-green job, so the floating vN tag moves only for a commit main has proven.
  • The zizmor ref is bumped to v1.6.1. AGENTS.md's Releasing paragraph is updated to match.
Event Jobs that run (runner) macOS
pull_request aot-pack linux-x64 (ubuntu), build (ubuntu), zizmor none
push (main) aot-pack x5 (ubuntu, ubuntu-24.04-arm, windows, windows-11-arm, macos for osx-arm64), build (ubuntu), zizmor osx-arm64 AOT pack
release main-green → aot-pack x5 (incl. osx-arm64 on macos) → build (pack, container push, nuget.org); zizmor (publishes nothing). create-major-tag.yml: main-green → create-major-tag osx-arm64 AOT pack
workflow_dispatch aot-pack x4 (no osx-arm64), build (ubuntu), zizmor none

On a release, every job that packs or publishes is downstream of main-green, and no release job needs a skipped job. The required checks (build, AOT pack (linux-x64)) still report on pull requests.

Verify

  • mise exec actionlint@latest shellcheck@latest -- actionlint: clean.
  • zizmor --min-severity medium .github: no findings.
  • The event table above comes from reading the if:/needs:/matrix expressions. No CI was run, to keep the runner queue free.

🤖 Generated with Claude Code

macOS runners are severely constrained. osx-arm64 AOT now runs only on a push
to main and on a release (macOS AOT only compiles on macOS, and its smokeaot
run stays in that job); workflow_dispatch packs the other four RIDs.

A release now starts with main-green, which waits for main's ci.yml push run
on the released commit and fails unless it passed. The AOT packs, the build
that packs and publishes, and the major-tag move all need it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Mpdreamz Mpdreamz added the ci Build and automation (patch) label Nov 12, 2026
@Mpdreamz
Mpdreamz merged commit 247a910 into main Nov 12, 2026
6 checks passed
@Mpdreamz
Mpdreamz deleted the ci/macos-main-gate branch November 12, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Build and automation (patch)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant