GitHub Actions
自托管 runner官方 runner 原生支持 macOS 和 Apple 芯片,注册后默认带 self-hosted、macOS、ARM64 标签。
./config.sh && ./svc.sh install
macOS CI/CD · 自托管构建机
把独享的 Mac mini 接成 GitHub Actions、GitLab、Jenkins 的自托管构建节点。固定月费、不按分钟计费,不用排队,构建缓存一直留在本机,越用越快。
name: iOS Build
on: [push, pull_request]
jobs:
build:
# 任务会派发到你自己的 Mac mini
runs-on: [self-hosted, macOS, ARM64]
steps:
- uses: actions/checkout@v4
- run: xcodebuild -scheme App test \
-destination 'platform=iOS Simulator,name=iPhone 16'
以 GitHub Actions 为例,开通后十几分钟就能让这台 Mac 开始跑构建。其他 CI 平台的流程也类似。
付款后系统自动开通,一般 15–30 分钟即可使用,在客户中心拿到 IP 和账号,用 SSH 登录。
ssh macuser@<your-mac-ip>
在仓库的 Settings → Actions → Runners 新建一个 macOS runner,按页面给出的命令下载并注册。
./config.sh --url https://github.com/<org>/<repo> \
--token <TOKEN>
把 runner 安装成系统服务,机器重启后也会自动上线,工作流里写 runs-on: self-hosted 即可。
./svc.sh install
./svc.sh start
你拥有完整的 root 权限,任何能在 macOS 上运行的构建代理都能装。下面是最常见的几种。
官方 runner 原生支持 macOS 和 Apple 芯片,注册后默认带 self-hosted、macOS、ARM64 标签。
./config.sh && ./svc.sh install
用 Homebrew 安装 GitLab Runner,选择 shell 执行器注册到你的项目或群组,iOS 构建直接调用 Xcode。
brew install gitlab-runner
装好 Java 后,在 Jenkins 里把这台 Mac 添加为 SSH 代理节点,打上 macos 标签分配 iOS 任务。
brew install openjdk
用 Homebrew 安装 Buildkite Agent,填入 agent token 后即可接收流水线任务。
brew install buildkite/buildkite/buildkite-agent
两种方式各有长处。构建越频繁、项目越大,自托管 Mac 的优势越明显。
Lumio 自托管 Mac
云端共享 macOS 构建机
几条实用建议,能少踩很多坑。
用 xcode-select 或 xcodes 管理多个 Xcode 版本,在流水线里明确指定,避免系统更新后构建突然失败。
为 CI 单独建一个钥匙串存放证书,构建前用 security 命令解锁,或者用 fastlane match 统一管理证书。
DerivedData、旧模拟器和构建产物会越积越多,可以设一个定时任务定期清理,避免硬盘写满导致构建失败。
建议用专门的系统用户运行构建代理,和日常登录的账号分开,权限更清楚,也更安全。
把 Mac 接入 CI 之前的常见疑问。
一个 runner 同一时间跑一个任务。可以在同一台 Mac 上注册多个 runner 实现并发,但 Xcode 编译很吃 CPU 和内存,16GB 内存的机器一般建议同时跑 1–2 个 iOS 构建。
不建议。GitHub 官方提醒,公开仓库的 Pull Request 可能在自托管 runner 上执行任意代码。自托管 runner 最好只用于私有仓库,或者开启需要审批才运行的设置。
会。按官方方式把 runner 安装成系统服务(GitHub 用 svc.sh,GitLab 用 brew services),开机后会自动启动并重新连接。
可以。把你自己的证书和描述文件放进构建机的钥匙串,配合 fastlane 或 xcodebuild 就能自动签名、打包并上传到 App Store Connect 和 TestFlight。
小团队从 M4 Essential 起步就够;缓存多、需要多个 Xcode 版本选 M4 Core(512GB);编译时间是瓶颈的大型工程选 M6。
可以。套餐按月付费,需要更多并发时再下单一台,新机器付款后 15–30 分钟自动开通,注册成新的 runner 就能分担任务。