Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,14 @@ jobs:
# ---------------------------------------------------------------------------
build-darwin-arm64:
name: Build macOS ARM64
# The shipped-profile library compile peaks near 12 GB and swaps on this
# free 7 GB runner (0.63.1's ARM64 build ran past a shorter limit twice),
# so the limit leaves only the tag canceller's 10 minutes below GitHub's
# 360-minute maximum.
runs-on: macos-26
timeout-minutes: 350
# The macOS release jobs run on CortexKit's rented Mac (12 cores, 16 GB,
# one job at a time, checkouts kept warm between jobs) until the rental
# ends on 21 November 2026; then they move back to `macos-26`. GitHub's
# free 7 GB runner swaps on the shipped-profile library compile, which
# peaks near 12 GB, and needed close to its 360-minute maximum. The rented
# Mac has no Rust or Bun on its PATH, so every job installs its toolchains.
runs-on: [self-hosted, rented-mac]
timeout-minutes: 150
outputs:
rust_version: ${{ steps.bundle.outputs.rust_version }}
permissions:
Expand Down Expand Up @@ -306,8 +308,8 @@ jobs:
build-darwin-x64:
name: Build macOS x64
# Same runner and limit as the ARM64 build; see the note there.
runs-on: macos-26
timeout-minutes: 350
runs-on: [self-hosted, rented-mac]
timeout-minutes: 150
env:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: sccache
Expand Down Expand Up @@ -590,6 +592,9 @@ jobs:
e2e-darwin-arm64:
name: Shipped E2E (macOS ARM64)
needs: build-darwin-arm64
# Stays on GitHub's runner: the rented Mac downloads the 135 MB tested
# bundle at about 160 KB/s (14 minutes), while the suite itself takes a
# few minutes here.
runs-on: macos-26
# v0.62.0/v0.63.3/v0.63.4: 2.4/3.0/3.4 min; 10 min covers cold setup.
timeout-minutes: 10
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"targeted_mechanism": "none",
"kind": "harness",
"slice_class": "non_ranking",
"fixtures": [
"harness-goldens"
]
}
7 changes: 5 additions & 2 deletions scripts/lib/test_workflow_gates.py
Original file line number Diff line number Diff line change
Expand Up @@ -741,7 +741,9 @@ def test_libtest_codegen_is_split_without_rebuilding_dependencies(self) -> None:

def test_macos_jobs_use_free_github_runners(self) -> None:
# AFT's repository is public, where GitHub's macOS runners are free;
# no job may name a paid runner provider.
# no job may name a paid runner provider. The macOS release jobs run
# on CortexKit's rented Mac until its rental ends on 21 November 2026
# (see the note on build-darwin-arm64 in release.yml).
suite = workflow_gates.parse_workflow(str(REPO_ROOT / ".github/workflows/_unit-suite.yml"))
release = workflow_gates.parse_workflow(str(REPO_ROOT / ".github/workflows/release.yml"))
jobs = suite["jobs"]
Expand All @@ -750,7 +752,8 @@ def test_macos_jobs_use_free_github_runners(self) -> None:
for name in ("unit-macos-libtest-archive", "unit-macos-libtest-shard", "unit-macos-bin-archive", "unit-macos-nextest-archive", "unit-macos-inventory-proof"):
self.assertEqual(jobs[name]["runs-on"], "macos-26", name)
for name in ("build-darwin-arm64", "build-darwin-x64"):
self.assertEqual(release["jobs"][name]["runs-on"], "macos-26", name)
self.assertEqual(release["jobs"][name]["runs-on"], ["self-hosted", "rented-mac"], name)
self.assertEqual(release["jobs"]["e2e-darwin-arm64"]["runs-on"], "macos-26")
for workflow in (suite, release):
self.assertEqual(
[name for name, job in workflow["jobs"].items() if "blacksmith" in str(job.get("runs-on", "")).lower()],
Expand Down
Loading