多 Job 同机 codesign 易出钥匙串争用、Profile 目录 race、共享 DerivedData 脏缓存;把身份、授权、工作区拆开可降长尾。Runner 编排见 GitHub Actions 多机协作手册,常驻部署见 远程 Mac 部署实操。
一、冲突面:并发 codesign 争什么
Keychain影响解锁状态与分区列表;Provisioning Profile按 UUID 落盘,多 Job 同目录读写会 race;工作区不隔离 -derivedDataPath 与 export 树就会互相污染。先为三条线各定 Owner,再谈并行度。
二、Keychain 与 Profile:两档常用策略
Runner 级:每 Runner 独立系统用户,钥匙串长期存、轮换简单。Job 级:create-keychain 建临时库,导入 p12 后 set-key-partition-list,结束 delete-keychain,吞吐高须脚本幂等。Profile 复制到 Job 私有目录并在 xcodebuild 或 exportOptions.plist 显式引用;清理按 UUID 精确删,忌通配扫系统 Profile 目录。
三、工作区与落地步骤
用 Job 前缀目录包住源码、DerivedData、IPA,always() 幂等清理;签名目录永不跨 Job 共享,与既有持久卷 / 远端 cache 分层并存。
- 写死 Keychain 档位与解锁/分区列表命令。
- Profile 私有路径 + 精确清理;
xcodebuild强制独立-derivedDataPath。 - 压测 N 路并行 codesign,按错误码调队列与 Runner 数。
四、对比 FAQ
- 能共用登录钥匙串吗?多 Job 并发不建议;分用户或临时库。
- 自动签名还要隔离 Profile 吗?要,磁盘解析仍有 race。
- 比一机一并发好在哪?隔离到位才值得加并行,否则不如串行稳。
在 Mac mini 上把签名池跑稳
macOS 与 Xcode 一致减 CI 偶发;Mac mini Apple Silicon 带宽利好多 Job,待机约 4W 适 7×24。Gatekeeper、SIP、FileVault 降无人值守风险,TCO 常优于通用 PC。
Runbook 定稿后若要验节点,打开 Macstripe 首页。Mac mini M4 仍是 2026 年扩容签名池的高性价比起点,比盲目加并发更能压长尾。