From 9e24a71f45eb027228d3b55e141ed2102144c2bf Mon Sep 17 00:00:00 2001 From: Luther Monson Date: Thu, 21 May 2026 23:30:00 -0700 Subject: [PATCH] chore(ci): gate arm64/macOS matrix jobs on repo vars + continue-on-error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build (Linux arm64) and Build (macOS arm64) have been sitting in "Pending" forever on every PR because no self-hosted runner with the matching labels is online. That makes the PR checks UI look broken and trains people to ignore yellow checks. Two changes per gated job: if: ${{ vars.HAS__RUNNER == 'true' }} Job is "Skipped" rather than "Pending" when the operator hasn't set the corresponding repo variable. To re-enable once a runner is online: gh variable set HAS_LINUX_ARM64_RUNNER --body true gh variable set HAS_MACOS_ARM64_RUNNER --body true continue-on-error: true Even when the runner IS online, a failure here doesn't fail the PR check group. These two platforms aren't covered by the primary CI runner so we tolerate flake there. Windows amd64 stays required (no gate, no continue-on-error) — the self-hosted Windows runner is live on the build machine and the build sanity check is genuinely useful there. --- .github/workflows/ci.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 126a1d4..5b8c611 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,14 @@ jobs: build-macos: name: Build (macOS arm64) needs: ci + # Gate on a repo variable so the job is "Skipped" (not "Pending forever") + # when no self-hosted macOS arm64 runner is online. Set + # `gh variable set HAS_MACOS_ARM64_RUNNER --body true` once the runner is up. + if: ${{ vars.HAS_MACOS_ARM64_RUNNER == 'true' }} + # Even when a runner is online, don't block PR merges on a Build (macOS arm64) + # failure — those failures are usually environmental (Apple notarisation + # quirks, codesign certs) rather than code regressions caught elsewhere. + continue-on-error: true runs-on: [self-hosted, macos, arm64] steps: - uses: actions/checkout@v6 @@ -60,6 +68,11 @@ jobs: build-linux-arm64: name: Build (Linux arm64) needs: ci + # Gate on a repo variable so the job is "Skipped" (not "Pending forever") + # when no self-hosted Linux arm64 runner is online. Set + # `gh variable set HAS_LINUX_ARM64_RUNNER --body true` once the runner is up. + if: ${{ vars.HAS_LINUX_ARM64_RUNNER == 'true' }} + continue-on-error: true runs-on: [self-hosted, linux, arm64] steps: - uses: actions/checkout@v6