首页 / macOS CI/CD 运行器
macOS CI/CD 运行器
macOS CI/CD 运行器就是那台在每次推送后为你构建、测试并发布 Apple 平台代码的 Mac。Hatmac 为你在云端提供一台独享的 Mac mini 或 Mac Studio 来运行它,按月固定计费。
为什么自建 macOS CI/CD 运行器
托管的 macOS 分钟数用起来方便,但每个任务都从一台全新的机器开始,而且每分钟都要付费。当团队每天推送不止几次时,在自己掌控的 Mac 上运行自托管运行器,通常更快,预算也更好控制。
- 缓存常驻。DerivedData、Swift Package Manager 依赖、CocoaPods、Homebrew 和 Gradle 缓存在任务之间保留在磁盘上,增量构建不必每次从零开始。
- 费用固定。按月付费,而不是按构建分钟计费。发版周和平常一周花费相同。
- 工具链由你决定。固定所需的 Xcode 版本,预装模拟器运行时,保持流水线需要的 Ruby、Node 或 Java 版本。
- 独享硬件。每台 Hatmac 机器都是分配给单一客户的物理 Mac,不共享,也不是虚拟机,构建时间更稳定。
代价是机器需要你自己维护:macOS 更新、Xcode 升级和磁盘清理都由你安排。对大多数团队来说,这是一项工作量小且可预期的事情。
Mac mini M4
16GB · 256GB SSD
日常 iOS 构建、CI 运行器和远程 macOS。
低至 $119/月
- 月付$149/月
- 6 个月$139/月
- 12 个月$119/月
Mac mini M6
最受欢迎24GB · 512GB SSD
更大内存与存储,适合大型项目和缓存。
低至 $179/月
- 月付$209/月
- 6 个月$199/月
- 12 个月$179/月
Mac mini M5 Pro
24GB · 512GB SSD
Pro 级 CPU 与 GPU,适合重度构建和小型模型。
低至 $229/月
- 6 个月$249/月
- 12 个月$229/月
价格为每台机器起始配置的美元月费。需要更多内存、存储或多台机器?联系我们。
支持哪些 CI 系统
云端 Mac 就是一台普通的 macOS 机器,带完整桌面和终端,任何提供 macOS 代理的 CI 工具都能运行。下面是最常见的几种方案,每种都有单独的分步指南:
| CI 系统 | Mac 的连接方式 | 指南 |
|---|---|---|
| GitHub Actions | 运行器程序通过出站 HTTPS 轮询 GitHub | GitHub Actions Mac 运行器 |
| GitLab CI/CD | gitlab-runner 使用 shell 执行器,出站 HTTPS | GitLab macOS 运行器 |
| Jenkins | 控制器通过 SSH 连接,或由代理主动入站连接 | Jenkins macOS 构建代理 |
| Buildkite、TeamCity 等 | 厂商提供的 macOS 代理程序 | 像普通 macOS 服务一样安装 |
GitHub 和 GitLab 的运行器只发起出站连接,无需额外开放端口。Jenkins 通过 SSH 连接时,控制器需要能访问 Mac 的 SSH 端口。
构建 Mac 的安全基础
CI 运行器会执行流水线让它执行的任何代码,应当像生产基础设施一样对待。
- 使用专用用户。以标准用户而非管理员账户运行运行器,管理员权限只用于维护。
- 签名使用独立钥匙串。把证书导入只供 CI 用户使用的钥匙串,在任务中解锁,结束后再锁定。
- 机密放在 CI 系统里。证书密码和 App Store Connect API 密钥应作为 CI 机密保存,不要放进代码仓库或 Mac 上的明文文件。
- 不运行不受信任的代码。在持久化运行器上,避免构建来自公开仓库 fork 的拉取请求。
- 定期打补丁。及时安装 macOS 安全更新,并在两次发版之间规划 Xcode 升级。
创建 CI 用户(命令会提示输入密码):
sudo sysadminctl -addUser ci -fullName "CI Runner" -password -
以该用户身份执行的典型代码签名钥匙串配置:
security create-keychain -p "$KEYCHAIN_PASSWORD" ci.keychain-db
security set-keychain-settings -lut 21600 ci.keychain-db
security list-keychains -d user -s ci.keychain-db login.keychain-db
security import dist.p12 -k ci.keychain-db -P "$P12_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" ci.keychain-db
最后一条命令允许 codesign 在没有界面弹窗的情况下使用私钥,这通常正是无界面构建卡住的原因。
选择合适的 Mac
- Mac mini M4 或 M6,16GB / 256GB:单条流水线、中小型应用、代码检查和单元测试。支持按月租用。
- Mac mini M6,24GB / 512GB:最受欢迎的方案。可容纳两个 Xcode 版本、多个模拟器运行时和充足的缓存。Xcode 加上模拟器很容易占用几十 GB。
- Mac mini M5 Pro,24GB / 512GB:适合大型应用和并行模拟器测试,仅提供 6 个月和 12 个月期限。
一台不够时,可以增加机器并把任务分摊过去。Mac 构建农场页面介绍了多机方案,批量报价请告诉我们你的需求。
如何开始
- 在价格部分选择方案,使用银行卡、PayPal、Bitcoin 或 USDT 付款。
- 付款后我们会为你配置好 Mac 并发邮件通知你,访问信息会显示在账户的“My Macs”中。
- 通过 SSH 或远程桌面连接,安装 Xcode 和 Homebrew,然后安装运行器。工具链配置请参考 Xcode 构建服务器指南。
完整流水线示例请阅读在云端 Mac mini 上做 iOS CI/CD。
常见问题
自建 macOS CI/CD 运行器比托管分钟数便宜吗?
取决于构建量。月费固定,构建越多,独享 Mac 越划算。12 个月期限的方案 $119/月起。
一台 Mac 可以同时服务多个 CI 系统吗?
可以,但每个运行器应使用独立的用户和工作目录,避免缓存和钥匙串冲突。大多数团队一台机器只用一个系统。
这台 Mac 会和其他客户共享吗?
不会。每台机器都是分配给单一客户的独享物理 Mac,不是虚拟机。
可以同时运行多个任务吗?
大多数运行器支持并行任务,但 Xcode 构建很吃资源。16GB 机型建议一次只跑一个任务。需要更高并发时,可选择更大的方案或把机器组成构建农场。