ci: move swift-packages matrix to self-hosted runner (Grogu) #180

Closed
opened 2026-05-13 18:45:38 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-13 18:45:38 +00:00 (Migrated from github.com)

What

Switch the swift-packages matrix in .github/workflows/ci.yml from GitHub-hosted macos-15 runners to a self-hosted macOS runner (Grogu).

Why

GitHub's macos-15 pool has been the rate-limiting step for v0.1 → publish-tag. The 13-way SPM matrix + 1 app-build job means 14 macOS slots needed; the pool consistently scheduled them 1–3 at a time, yielding 1–2h wall-clock per CI run versus actual work of < 10 min. Self-hosted on Grogu eliminates the queue and keeps SwiftPM .build/ caches hot across runs.

Scope

  • Move only swift-packages matrix to self-hosted in this PR. Keep app-build on macos-15 initially (one variable at a time).
  • Add if: gate to block fork PRs from triggering self-hosted jobs (security surface).
  • Add /Applications/Xcode.app/Contents/Developer as the final fallback in the Xcode-select step so the runner picks up whatever Xcode 26.x is installed locally (Grogu has Xcode 26.5; GitHub-hosted has 26.3).

Runner setup (already complete on Grogu)

  • Runner: Grogu-jarvis (ID 21), labels [self-hosted, macOS, ARM64, jarvis].
  • Installed at ~/actions-runner-jarvis/ as a launchd LaunchAgent.
  • _work symlinked to /Volumes/HD-2/jarvis-runner-work (1.3 TB free) to avoid boot-disk pressure.

Security gates

  • Workflow if: excludes fork PRs from self-hosted jobs.
  • Repo Setting "Fork pull request workflows from outside collaborators" → "Require approval for all outside collaborators" (UI step — no public API).
  • Branch protection on develop already prevents force-push and requires PR.

Acceptance

  • swift-packages jobs land on Grogu within seconds of dispatch.
  • Total CI wall-clock for develop pushes drops well below 1h.
  • First green run on develop produces a v0.1.0-dev.<N> tag.
## What Switch the `swift-packages` matrix in `.github/workflows/ci.yml` from GitHub-hosted `macos-15` runners to a self-hosted macOS runner (Grogu). ## Why GitHub's macos-15 pool has been the rate-limiting step for v0.1 → publish-tag. The 13-way SPM matrix + 1 app-build job means 14 macOS slots needed; the pool consistently scheduled them 1–3 at a time, yielding 1–2h wall-clock per CI run versus actual work of < 10 min. Self-hosted on Grogu eliminates the queue and keeps SwiftPM `.build/` caches hot across runs. ## Scope - Move only `swift-packages` matrix to self-hosted in this PR. Keep `app-build` on `macos-15` initially (one variable at a time). - Add `if:` gate to block fork PRs from triggering self-hosted jobs (security surface). - Add `/Applications/Xcode.app/Contents/Developer` as the final fallback in the Xcode-select step so the runner picks up whatever Xcode 26.x is installed locally (Grogu has Xcode 26.5; GitHub-hosted has 26.3). ## Runner setup (already complete on Grogu) - Runner: `Grogu-jarvis` (ID 21), labels `[self-hosted, macOS, ARM64, jarvis]`. - Installed at `~/actions-runner-jarvis/` as a launchd LaunchAgent. - `_work` symlinked to `/Volumes/HD-2/jarvis-runner-work` (1.3 TB free) to avoid boot-disk pressure. ## Security gates - Workflow `if:` excludes fork PRs from self-hosted jobs. - Repo Setting "Fork pull request workflows from outside collaborators" → "Require approval for all outside collaborators" (UI step — no public API). - Branch protection on develop already prevents force-push and requires PR. ## Acceptance - [ ] `swift-packages` jobs land on Grogu within seconds of dispatch. - [ ] Total CI wall-clock for develop pushes drops well below 1h. - [ ] First green run on develop produces a `v0.1.0-dev.<N>` tag.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#180