chore(ci): use Blacksmith macOS runners - #1688
Conversation
Point every macOS job at blacksmith-6vcpu-macos-latest, keeping the existing os matrix key so job names and step conditions stay unchanged.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe CI workflows now assign explicit runners per matrix entry. macOS and iOS jobs use Blacksmith macOS runners. Ubuntu and Windows jobs retain their existing GitHub-hosted runners. Actionlint recognizes the Blacksmith runner label. ChangesCI runner routing
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
.github/workflows/example-integration-tests.yml (1)
127-128: 🔒 Security & Privacy | 🔵 TrivialVerify Blacksmith runner isolation for pull-request jobs.
If this workflow runs untrusted pull requests, confirm that the runner is ephemeral and isolated per job. The workflow checks out repository code and exposes
GH_TOKENfrom${{ secrets.GITHUB_TOKEN }}. A shared persistent runner could expose workspaces, caches, or tokens to later jobs.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/example-integration-tests.yml around lines 127 - 128, Verify that the Blacksmith runner used by the macos and ios matrix jobs is ephemeral and isolated per job, given that the workflow checks out untrusted pull-request code and exposes GH_TOKEN. Update the runner configuration or workflow to enforce clean per-job isolation, and preserve the existing targets.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/build.yml:
- Line 83: Add blacksmith-6vcpu-macos-latest to the allowed runner labels in
actionlint.yaml, and ensure the Blacksmith GitHub App exposes that identical
label for the organization. This root-cause configuration change covers the
usages in .github/workflows/build.yml lines 83-83 and 86-86,
.github/workflows/test.yml line 244-244, and
.github/workflows/example-integration-tests.yml lines 127-128; no direct
workflow changes are required.
---
Nitpick comments:
In @.github/workflows/example-integration-tests.yml:
- Around line 127-128: Verify that the Blacksmith runner used by the macos and
ios matrix jobs is ephemeral and isolated per job, given that the workflow
checks out untrusted pull-request code and exposes GH_TOKEN. Update the runner
configuration or workflow to enforce clean per-job isolation, and preserve the
existing targets.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 2085ad42-e729-4cb2-be69-fa5a378132a3
📒 Files selected for processing (3)
.github/workflows/build.yml.github/workflows/example-integration-tests.yml.github/workflows/test.yml
Moves every macOS CI job from GitHub-hosted
macos-latesttoblacksmith-6vcpu-macos-latest, mirroring supabase/supabase-swift#1185.Jobs migrated
.github/workflows/build.yml:Build macos,Build ios.github/workflows/test.yml:Flutter v3.35.x on macos-latest,Flutter Latest on macos-latest.github/workflows/example-integration-tests.yml:macos,iosUbuntu and Windows jobs are untouched.
Implementation note
In
build.ymlandtest.ymltheosmatrix key feeds both the job display name and several step conditions, so a separaterunnerkey was added andruns-onpoints at that instead. Job names stay byte-identical, so required status checks in branch protection keep matching.example-integration-tests.ymlonly conditions onmatrix.target, so itsosvalue was swapped directly.A
.github/actionlint.yamlregisters the Blacksmith label, since actionlint cannot discover labels that come from a GitHub App and would otherwise flag everyruns-onhere.Measured effect
Median duration of the GitHub-hosted jobs over the last two days of runs, against this branch's first run:
Build macosBuild iosFlutter v3.35.x on macosFlutter Latest on macosQueue time went up slightly, from 2 to 4 seconds to 13 to 22 seconds, which the runtime saving absorbs several times over.
Still unexercised
Example integration testsis gated behind a release title or theintegration testslabel, so themacosandiossimulator jobs did not run here. Those boot a simulator withxcrun simctl erase/boot, which is the most likely step to behave differently on a Blacksmith image, so the label is worth applying once before merge.Closes SDK-1466
Summary by CodeRabbit