2026年企业 Mac CI 资源池:并发 codesign、Keychain 与 Provisioning Profile 隔离

多 Job 同机 codesign 易出钥匙串争用、Profile 目录 race、共享 DerivedData 脏缓存;把身份、授权、工作区拆开可降长尾。Runner 编排见 GitHub Actions 多机协作手册,常驻部署见 远程 Mac 部署实操

一、冲突面:并发 codesign 争什么

Keychain影响解锁状态与分区列表;Provisioning Profile按 UUID 落盘,多 Job 同目录读写会 race;工作区不隔离 -derivedDataPath 与 export 树就会互相污染。先为三条线各定 Owner,再谈并行度。

口诀:身份沙箱、Profile 私有路径、一 Job 一路径。

二、Keychain 与 Profile:两档常用策略

Runner 级:每 Runner 独立系统用户,钥匙串长期存、轮换简单。Job 级create-keychain 建临时库,导入 p12 后 set-key-partition-list,结束 delete-keychain,吞吐高须脚本幂等。Profile 复制到 Job 私有目录并在 xcodebuildexportOptions.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 年扩容签名池的高性价比起点,比盲目加并发更能压长尾。