若你搜的是「GitHub Actions macOS 慢」「iOS CI 卡住」「macos-latest queued」,常见症状是:
- PR 合并前多等 5–10 分钟排队(发版周更久)
xcodebuild/pod install波动巨大,同 commit 差 2–3 倍- 工程师体感:「CI 像抽奖,不敢在周五下午 merge」
👉 本文是总览:对照结果与阅读路径。排队、构建慢、缓存、买租决策、架构——各有一篇专题展开,按需跳转即可。
- warm build P95:
macos-latest14:12 → 独享 Mac mini M4 6:05(-57%) - 排队:平均 4:20 → 0
- 方差 σ:3:20 → 1:55(约 -40%)
下文保留对照结果摘要与 Shadow 双跑步骤;缓存 workflow、评分模型、架构清单在对应专题里展开。
- warm P95 14:12 → 6:05;σ -40%;排队归零
- 优化顺序:排队 → 分清 cold/warm → 缓存 → 并发隔离 → 硬件
- 复现对照:Shadow 双跑上手
若团队日 PR > 20、macOS CI 经常排队,建议用 买还是租 专题里的成本模型算一笔账。月构建 <50 次可继续用 macos-latest。
排队多 → macos-latest 为什么会排队 · 构建忽快忽慢 → iOS CI 构建很慢怎么办 · 要算账 → 买还是租 · 要看数据 → 本文 瀑布图 与 对照结果。
1. GitHub Actions macOS / iOS CI 为什么慢?
不同团队卡在不一样的地方。本文只给总览——按你的症状跳到对应专题:
| 你在搜什么 | 典型症状 | 去读 |
|---|---|---|
| macos-latest queued / github actions macos slow | PR 多等 4–8 分钟,发版周更久 | macos-latest 为什么会排队 |
| xcodebuild slow / ios ci slow fix | 同 commit 有时 4 分有时 12 分 | iOS CI 构建很慢怎么办 |
| cocoapods cache / deriveddata cache ci | pod install 3–6 分钟跳动 |
iOS CI 缓存优化(CocoaPods / SPM / DerivedData) |
| self-hosted runner roi / mac mini ci | 要不要买/租 Mac mini? | 买 Mac mini 还是租 Cloud Mac |
| self-hosted architecture / multi runner | 多机并发、备用 runner、标签规划 | self-hosted 架构怎么搭 |
若你只想看「换 runner 能快多少」,留在本文 对照结果 与 瀑布图。
2. 对照结果:self-hosted Mac mini M4 提升多少
8 人 iOS 团队 · CocoaPods · 日 PR 25–40 · 未改业务代码,仅换 runner。warm build 核心数据:
| 指标 | macos-latest | Mac mini M4 | 变化 |
|---|---|---|---|
| P50 | 11:38 | 5:22 | -54% |
| P95 | 14:12 | 6:05 | -57% |
| σ | 3:20 | 1:55 | -40% |
| max | 22:40 | 8:30 | -62% |
| 失败率(14 天) | 8.0% | 3.2% | — |
环境摘要:8 人 iOS 团队 · CocoaPods · 日 PR 25–40 · 两侧 Xcode 16.2 对齐 · Mac mini M4 16GB + 1TB 数据盘 · 14 天 187 PR shadow 双跑。cold/warm 拆分见 构建波动专题;复现见 Shadow 快速上手。
4:00–5:00 |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 52% 5:00–6:00 |■■■■■■■■■■■■■■■■■■ 28% 6:00–7:00 |■■■■■■ 10% P95 6:05 |■■■■■■■■■■■■■■
3. P95 时间瀑布图:14:12 → 6:05(-57%)
传播用核心图——8 分 07 秒节省从哪来:
macos-latest P95 ████████████████████████ 14:12
│
排队消除 −4:50 ████████████░░░░░░░░░░░░
cache/Pods −1:40 ████░░░░░░░░░░░░░░░░░░░░
xcodebuild −1:15 ███░░░░░░░░░░░░░░░░░░░░░
签名/上传 −0:20 █░░░░░░░░░░░░░░░░░░░░░░░
▼
self-hosted P95 ██████████ 6:05 (−57%)
排队单项约 −4:50 → 读 排队专题。缓存约 −1:40 → 读 iOS CI 缓存优化。
4. 按问题选专题
下面按常见排查顺序排列——不必全读,从和你最相关的那篇开始即可:
PR 老在排队? → macos-latest 为什么会排队 → 或先看本文对照数据 + 瀑布图 构建时间忽快忽慢? → iOS CI 构建很慢怎么办 → GitHub Actions iOS CI 缓存优化 纠结买机还是租 Cloud Mac? → 本文 Shadow 对照数据 → 买 Mac mini 还是租 Cloud Mac(专题撰写中) → Cloud Mac 套餐 / CI/CD 接入说明 要上多机、备用 runner? → self-hosted 架构怎么搭(专题撰写中)
5. 专题导航
每篇只讲一个具体问题。本文负责对照数据总览与跳转。
| 专题 | 适合谁 |
|---|---|
| macos-latest 为什么会排队 | PR 经常在队列里干等 |
| iOS CI 构建很慢怎么办 | 同 commit 构建时间差 2–3 倍 |
| GitHub Actions iOS CI 为什么这么慢?缓存优化 | 需要 workflow 示例、配 cache key |
| Mac mini M4 跑 CI Runner 真的划算吗?ROI 模型 | 要算买机 vs 租 Cloud Mac |
| self-hosted Mac mini 架构 | 多 runner、标签、备用路径 |
延伸阅读:为什么 iOS CI/CD 跑在 Mac mini M4 上 · 换 M4 Pro 能省多少全员工时 · Cloud Mac 接 CI/CD 指南
6. Shadow 双跑上手
下面是最小复现步骤。完整 workflow、灰度清单见 架构专题;缓存 workflow 见 缓存优化专题。
- 复制
ios-ci.yml→ios-ci-shadow.yml,增加runs-on: [self-hosted, macos-m4-ios]job - 与
macos-latest对每次 PR 用相同 commit SHA 双跑 7–14 天 - 记录墙钟 P50/P95、queue time;warm build 单独算 P95(定义见构建波动专题)
- 对比失败率后,再读 买还是租 专题做决策
on:
pull_request:
branches: [main, release/*]
jobs:
ios-hosted:
runs-on: macos-latest
ios-shadow:
runs-on: [self-hosted, macos-m4-ios]
# 相同 steps · 相同 SHA
7. 常见问题
GitHub Actions macOS self-hosted runner 能比 macos-latest 快多少?
本次 warm 构建 P95 −57%(14:12→6:05),σ −40%。见 对照结果;复现见 Shadow 双跑上手。
GitHub Actions macOS runner 为什么会排队?
共享托管池 + 发版周高并发。排队不计费但计入墙钟。完整拆解 → 排队专题。
self-hosted runner 会不会更不稳定?
取决于运维:磁盘水位、runner 守护、签名材料。Shadow 期间可对比失败率;本文 14 天失败率 8.0% → 3.2%。保留 macos-latest 作备用路径,可降低切换风险。
Mac mini 做 CI runner 是否值得?
日 PR 20+ 且排队恶化时值得评估。月构建 <50 可继续托管。评分模型与 TCO → 买还是租。
GitHub macos-latest 有哪些限制?
共享队列、短生命周期工作区、缓存跨 job 不稳定、并发 I/O 争抢。无法固定 DerivedData 或消除排队。
iOS CI P95 怎么优化?
排队 → cold/warm → 缓存 → 并发 → 硬件。分步见 排队 · 构建波动 · 缓存优化。
CocoaPods 缓存怎么优化?
完整 workflow 与 cache key 设计 → 缓存优化专题。
迁移要多久?
准备 1–2 天 + shadow 7–14 天 + 灰度 3–5 天。先 shadow 只跑 test,再导签名。
8. 结论
换 self-hosted runner 后 warm P95 可从 14:12 压到 6:05,方差也明显收敛。本文给对照数据与瀑布拆解;排队、构建慢、缓存、买租决策、架构各有专题展开。先用 Shadow 双跑拿你们自己的数据,再决定要不要上独享 Mac。
算清楚再下单
建议路径:Shadow 双跑 → 买还是租 → 租用 Mac mini M4。Vuncloud 提供独享 M4(预装 Xcode、1TB 数据盘、runner 指引)。