在 Windows 或 Linux 办公、却要把 iOS / macOS 流水线跑稳的团队,2026 年最常见的分叉是:继续用 GitHub 托管 macOS Runner(按分钟计费、环境 ephemeral),还是在 远程独享 Mac mini 上注册 self-hosted Runner(持久磁盘、可预测月费)。本文主场景是后者——GitHub Actions 自建 macOS Runner,不写 OpenClaw 或 Agent 运维。下文按「托管 vs 自建 → 六地节点 → M4 内存与并发槽位 → DerivedData 与磁盘 → 并联 label → 注册 HowTo → 日租—月租 TCO → FAQ」展开;套餐与地区结账见 定价方案,Runner/SSH 说明见 帮助中心。若你也在评估常驻自动化,可与站内 OpenClaw 远程 Mac 实操文 对照阅读,但本文叙事以 CI/CD 为主。
一、2026 托管 macOS Runner vs 远程 Mac 自建:分钟费、队列与何时该租裸金属
GitHub 对 macOS 托管 Runner 按仓库/组织的 Actions 用量计费,单价与免费额度以 GitHub 官方计费文档 为准(2026 年起托管 Runner 价格有过调整,上线前请核对当前分钟单价)。托管环境的优势是零运维:每次 job 在干净镜像上起跑,适合低频 PR、偶发 Archive。劣势也明确:DerivedData / SPM 缓存难以跨 job 长期保留,高峰时段可能排队;分钟数一多,账单波动大。
在 Nuvcloud 等独享 M4 Mac mini 上自建 Runner,本质是买「固定席位 + 持久 SSD」:同一台机器上 actions-runner 由 launchd 守护,~/Library/Developer/Xcode/DerivedData 可跨 PR 复用,增量编译往往比冷启动托管 Runner 快一截(具体幅度取决于工程规模,下文用算例模板而非承诺 SLA)。
| 路径 | 更适合 | 主要代价 |
|---|---|---|
| GitHub 托管 macOS | 每月 macOS 分钟 < 数百、无持久缓存诉求、不想碰机器。 | 分钟费 + 队列;DerivedData 难沉淀。 |
| 远程 Mac 自建 Runner | 日更 main、多 scheme 并行、要快 Archive/TestFlight。 | 需管 Runner 升级、磁盘与签名互斥;月租可预测。 |
| 自购 Mac mini 放办公室 | 单机、无多地域诉求、能接受断电与公网暴露治理。 | 采购 + 电费 + 运维人力;扩容要再买硬件。 |
12 个月 TCO 算例模板(示例假设,请代入自家数字):设托管 macOS 单价为 P 元/分钟,月消耗 M 分钟,则年托管成本 ≈ 12 × M × P。设远程 Mac 月租为 R 元(含机位与带宽),年租成本 ≈ 12 × R。当 M × P 持续高于 R 且你需要持久 DerivedData 时,自建通常更划算;若 M 很小且波动大,可先托管或日租远程机验证一轮流水线再转月租。
二、新加坡/日本/韩国/香港/美东/美西:按 Git、Registry、制品库就近选节点
Nuvcloud 在亚太提供新加坡、日本、韩国、香港节点,在北美提供美东、美西方向(具体可用区以 结账向导 为准)。选型时不要问「离我家近不近」,而要问:Git 远端、Container Registry、TestFlight/签名服务、以及团队主要值班时区落在哪。已确定配置可直接进入地区页:新加坡、日本、韩国、香港、美东、美西。
建议在候选节点各跑同一套基准:git clone --depth=1、拉取 1GB 级制品、一次 xcodebuild -showBuildSettings 冷启动与热启动对比。SSH 管理员的 RTT 只影响体感,不决定 CI 总时长。
| 节点 | 典型优先场景 | 协作分工提示 |
|---|---|---|
| 新加坡 | 东南亚用户制品、GitHub 亚太镜像、面向 SG/MY 团队的 Runner。 | 与香港二选一时,看谁的主仓在亚太中南部。 |
| 日本 | 日本法人合规、东京周边协作者、日区夜间发布窗口。 | 适合「亚太研发 + 日本 QA」双时区。 |
| 韩国 | 韩国市场 App、本地 CDN 源站、首尔团队 SSH 排障。 | 与东京类似,以业务数据面而非 ping 决策。 |
| 香港 | 大陆/港澳团队混合、亚太主仓在华南。 | 大陆办公室 SSH 体感常优于直连美西。 |
| 美东 | GitHub 生态默认美东、东海岸 SaaS、npm/Actions 缓存命中美东。 | 以 CI 制品路径为准,勿只看地图距离。 |
| 美西 | 西海岸协作、部分镜像托管美西、面向美西用户的夜间构建。 | 亚太 SSH 可能略慢,但 job 拉依赖仍可能更快。 |
三、M4 16GB/256GB 与 24GB/512GB、M4 Pro:并发 Runner 槽位与模拟器上限
在 Apple Silicon 上,一个物理 Runner 进程对应 GitHub 的 runs-on: self-hosted;单机能否同时跑几个 job 取决于 Runner 并发设置与 Xcode/Simulator 内存峰值。M4 16GB 适合 1 个重编译或 2 个轻量 job;24GB 适合 1 个 Archive + 1 个单模拟器 UI 测试;M4 Pro 高配 留给多模拟器矩阵或超大 monorepo。
| 配置 | 建议并发 Runner / worker 上限(经验值) | OOM / 卡顿信号 |
|---|---|---|
| M4 16GB / 256GB | 1× 全量 xcodebuild,或 2× 仅 lint/单测。 |
memory_pressure 频繁 Yellow;Simulator 启动失败。 |
| M4 24GB / 512GB | 1× Archive + 1× UI 测试;或 2× 中等编译 job(不同 DerivedData 前缀)。 | 并行 UI 测试时 WindowServer 飙升;swap 导致尾延迟变差。 |
| M4 Pro 更高配 | 多模拟器 OS 版本矩阵;同时保留 2 套 Xcode 次要版本。 | 磁盘 IOPS 先于 CPU 成为瓶颈(见下一节)。 |
Workflow 里用 runs-on: [self-hosted, macOS, compile] 与 runs-on: [self-hosted, macOS, ui-test] 把重活拆开,比在单机上把 Runner 并发拉满更安全。
四、1TB/2TB 扩容与 DerivedData:并行 worktree 磁盘规划与清理清单
托管 Runner 每次 job 往往从干净环境起跑,DerivedData 无法沉淀;自建 Runner 的最大收益之一就是让 ~/Library/Developer/Xcode/DerivedData 跨 PR 存活。并行 job 时禁止多 workflow 写同一 DerivedData 目录——须为每个 job 设置独立 DERIVED_DATA_PATH(或 -derivedDataPath),必要时配合 Git worktree。
- 可本地持久:DerivedData、SwiftPM 缓存、CocoaPods(若版本锁定)。
- 更适合 Actions cache:可再生的工具链 zip、Lint 缓存、体积大但可下载的依赖包。
- 磁盘告警:可用空间 <20% 触发 DerivedData LRU 清理最旧 30%;<10% 应 drain 该 Runner 不再接新 job。
| 磁盘 | 典型 CI 用法 | 何时值得升级 |
|---|---|---|
| 256GB–512GB 基线 | 单 Xcode 版本 + 单仓库 DerivedData;定期清理 Archives。 | 单仓 DerivedData 已 >40GB 或需并存 2 个 Xcode。 |
| 1TB | 2–3 个活跃分支缓存 + 模拟器运行时;并行 worktree 2 路。 | monorepo 多 scheme nightly 全量编译。 |
| 2TB | 多 Xcode 次要版本、历史符号、大体积 SPM 二进制缓存。 | 不想在 job 间频繁 rm -rf DerivedData 的团队。 |
五、并联资源拆分:多机 label、shard 与「轻量验证→连续开发」升级路径
当单机并发已顶到内存天花板,下一步是并联多台远程 Mac,用 label 做职能切分:
mac-ci-compile:只做xcodebuild build,保留 DerivedData。mac-ci-archive:独占签名与上传,workflow 里用concurrency互斥,避免双 job 抢钥匙串。mac-ci-ui:挂模拟器测试,内存更大的一台(24GB 或 Pro)。
升级路径:日租单机验证 workflow → 周租跑通缓存策略 → 月租固定 IP 与 Runner 指纹 → 按需加第二台做 shard。多台机器时,GitHub actions/cache 仍可共享「可再生产物」,但 DerivedData 仍以各机本地 SSD 为准。
六、HowTo:在远程 Mac 注册 self-hosted Runner
流程以 GitHub 官方文档:添加自托管运行器 为准(界面与令牌字段可能随版本变化)。在 Nuvcloud 机器上建议顺序:
- SSH 登录,安装 Xcode Command Line Tools / 目标 Xcode,接受许可协议。
- 创建专用 Unix 用户或在现有用户下建
actions-runner目录,勿用个人 Apple ID 直接签名生产包。 - 从仓库 Settings → Actions → Runners 获取注册命令,执行
config.sh,为 Runner 打上macos、m4、地区等 label。 - 用
launchd安装为服务(svc.sh install),确保 SSH 断开后进程仍存活。 - 在 workflow 中设置
DERIVED_DATA_PATH,并对签名 job 加concurrency: { group: codesign, cancel-in-progress: false }。
env:
DERIVED_DATA_PATH: ${{ github.workspace }}/DerivedData/${{ github.run_id }}
RUNNER_TOOL_CACHE: /Users/runner/actions-toolcache
xcodebuild \
-scheme "YourApp" \
-derivedDataPath "$DERIVED_DATA_PATH" \
build
七、日租/周租/月租 TCO 对照与升级配置
把「试运行」和「生产 Runner」分开算账,能避免用日租价格去类比月租产能:
| 周期 | 适合阶段 | CI 侧注意点 |
|---|---|---|
| 日租 | 六地节点 A/B、验证 DerivedData 是否真提速、试注册 Runner。 | 结束日导出签名证书说明与缓存目录清单;勿把生产密钥留在日租机。 |
| 周租 | 发布冲刺、迁移托管 Runner 工作流、并联第二台前的压测。 | 冻结 Xcode 小版本;记录 workflow 变更与分钟节省量。 |
| 月租 | main 分支日构建、固定 Runner 名、IP 白名单与缓存策略固化。 | 预留升级路径:16GB→24GB、加盘、加第二台 label 分片。 |
36 个月粗算(示例假设):自购 Mac mini + 电费 + 运维人力 = C_cap;远程月租 = 36 × R。若团队无专职 Mac 运维,C_cap 常被低估。对比托管分钟费时,记得把「排队导致的交付延迟」折进机会成本,而不只比单价。
机型与周期请在 定价方案 对照;已购用户通过 控制中心 续费与扩容。更多实践可浏览 技术博客 索引。
八、常见问题(FAQ)
Q1:自建 Runner 是否违反 GitHub 条款?
在自有或租用的 Mac 硬件上注册 self-hosted Runner 属于官方支持路径;请勿将 Runner 出售给无关第三方或用于违规用途(以 GitHub Terms 为准)。
Q2:能否与托管 macOS Runner 混用?
可以。例如 PR 用托管、main 用自建;注意 secrets 与签名证书只在自建机可用时的 workflow 分支条件。
Q3:DerivedData 缓存何时该清?
Xcode 升级、切换 major 分支、或磁盘低于 20% 时做 LRU;勿在并行 job 运行时整目录 rm -rf。
Q4:SSH 断线后 job 会停吗?
不会——job 由 Runner 服务进程执行。SSH 只影响你手工排障;请用 launchd 托管 Runner。
Q5:迁移节点后缓存怎么办?
DerivedData 与本地路径强绑定,迁移地区通常需重新预热;可先用 Actions cache 搬运 SPM/工具链,再跑一轮全量编译生成新 DerivedData。
Q6:16GB 上能开几个模拟器并行?
不建议在 16GB 上并行多个重型 UI 测试;拆到第二台 mac-ci-ui label 更稳。
Q7:签名 job 为什么要互斥?
两把钥匙串同时解锁、双 Archive 上传可能触发证书锁或覆盖同名 ipa;用 concurrency 串行化签名阶段。
Q8:日租结束如何防止令牌泄露?
在 GitHub 移除 Runner、轮换 PAT/注册 token、清理钥匙串与 ~/.ssh 中临时密钥(确认无其他服务依赖后)。
在云端 Mac mini 上,CI 编译更稳、更省分钟
自建 GitHub Actions macOS Runner 的核心,是把持久 DerivedData、可预测月费和多地区独享算力握在自己手里。Nuvcloud 的裸金属 M4 Mac mini 提供原生 Unix 工具链、Gatekeeper/SIP/FileVault 安全基线,以及适合 7×24 无人值守的功耗与稳定性;从日租验证节点到月租固化 Runner,还可按需升级 24GB、扩容 SSD 或并联第二台做 label 分片。
若你正从托管 macOS 分钟费迁到自建流水线,Nuvcloud 云端 Mac mini M4 是性价比很高的起点——立即了解套餐方案,让节点、内存与缓存策略一次配对、少返工。