首页 / 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 M4

Mac mini M6

16GB · 256GB SSD

更新的芯片,编译和测试更快。

低至 $129/月

  • 月付$169/月
  • 6 个月$159/月
  • 12 个月$129/月
订购 Mac mini M6

Mac mini M6

最受欢迎

24GB · 512GB SSD

更大内存与存储,适合大型项目和缓存。

低至 $179/月

  • 月付$209/月
  • 6 个月$199/月
  • 12 个月$179/月
订购 Mac mini M6

Mac mini M5 Pro

24GB · 512GB SSD

Pro 级 CPU 与 GPU,适合重度构建和小型模型。

低至 $229/月

  • 6 个月$249/月
  • 12 个月$229/月
订购 Mac mini M5 Pro

价格为每台机器起始配置的美元月费。需要更多内存、存储或多台机器?联系我们。

支持哪些 CI 系统

云端 Mac 就是一台普通的 macOS 机器,带完整桌面和终端,任何提供 macOS 代理的 CI 工具都能运行。下面是最常见的几种方案,每种都有单独的分步指南:

CI 系统Mac 的连接方式指南
GitHub Actions运行器程序通过出站 HTTPS 轮询 GitHubGitHub Actions Mac 运行器
GitLab CI/CDgitlab-runner 使用 shell 执行器,出站 HTTPSGitLab macOS 运行器
Jenkins控制器通过 SSH 连接,或由代理主动入站连接Jenkins macOS 构建代理
Buildkite、TeamCity 等厂商提供的 macOS 代理程序像普通 macOS 服务一样安装

GitHub 和 GitLab 的运行器只发起出站连接,无需额外开放端口。Jenkins 通过 SSH 连接时,控制器需要能访问 Mac 的 SSH 端口。

构建 Mac 的安全基础

CI 运行器会执行流水线让它执行的任何代码,应当像生产基础设施一样对待。

  1. 使用专用用户。以标准用户而非管理员账户运行运行器,管理员权限只用于维护。
  2. 签名使用独立钥匙串。把证书导入只供 CI 用户使用的钥匙串,在任务中解锁,结束后再锁定。
  3. 机密放在 CI 系统里。证书密码和 App Store Connect API 密钥应作为 CI 机密保存,不要放进代码仓库或 Mac 上的明文文件。
  4. 不运行不受信任的代码。在持久化运行器上,避免构建来自公开仓库 fork 的拉取请求。
  5. 定期打补丁。及时安装 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 构建农场页面介绍了多机方案,批量报价请告诉我们你的需求。

如何开始

  1. 在价格部分选择方案,使用银行卡、PayPal、Bitcoin 或 USDT 付款。
  2. 付款后我们会为你配置好 Mac 并发邮件通知你,访问信息会显示在账户的“My Macs”中。
  3. 通过 SSH 或远程桌面连接,安装 Xcode 和 Homebrew,然后安装运行器。工具链配置请参考 Xcode 构建服务器指南。

完整流水线示例请阅读在云端 Mac mini 上做 iOS CI/CD。

常见问题

自建 macOS CI/CD 运行器比托管分钟数便宜吗?

取决于构建量。月费固定,构建越多,独享 Mac 越划算。12 个月期限的方案 $119/月起。

一台 Mac 可以同时服务多个 CI 系统吗?

可以,但每个运行器应使用独立的用户和工作目录,避免缓存和钥匙串冲突。大多数团队一台机器只用一个系统。

这台 Mac 会和其他客户共享吗?

不会。每台机器都是分配给单一客户的独享物理 Mac,不是虚拟机。

可以同时运行多个任务吗?

大多数运行器支持并行任务,但 Xcode 构建很吃资源。16GB 机型建议一次只跑一个任务。需要更高并发时,可选择更大的方案或把机器组成构建农场。