企业 Mac CI:Fastlane match 与并行 codesign 证书治理

多仓并行 Job 压在同一台高内存 Apple Silicon共享裸金属上,常在 Fastlane match手动证书ASC API(JWT)间取舍;拖垮整机的多是钥匙串写入、codesign 与 NVMe 写队列叠加。下文按分工、只读仓、临时钥匙串与并发磁盘拆解,并链 多仓并行 PR:worktree 与独立 cloneDerivedData/SwiftPM 与磁盘峰值

一、match、手动证书与 ASC API:谁该做什么

match 把私钥与证书放进加密 Git 仓,CI 导入临时钥匙串、少碰登录钥匙串。手动证书隔离强但漂移快。ASC API 管 Bundle ID、能力与 TestFlight,不替代本地私钥;常见是「match 管材料 + API 管状态」。Runbook 分清 JWT 与交互式 Apple ID,避免无人值守混用。

二、只读模式与加密证书仓同步:降写放大

反复 git clone 证书仓易把小文件随机写打满 NVMe。宿主机持久裸 clone + 浅获取,Job 内只读挂载;刷新单独调度。match 固化只读拉取、禁 nukeMATCH_READONLY 写进环境矩阵;多仓共用证书坚持单一上游仓

三、临时钥匙串:隔离 codesign 的「第一现场」

登录钥匙串在多 Job 下易锁竞争。每 Job 用独立临时钥匙串,调 ACL 让 codesign 非交互,结束即删。排障只看本 Job 的 security find-identity -v -p codesigning

四、codesign 并发与 NVMe 峰值

codesign 碰钥匙串与临时目录:设全局签名槽位,槽内限并行 xcodebuild;钉死 DEVELOPER_DIR,描述文件进 Job 沙箱。统一内存缓读,但导入与解包仍有写尖峰——证书仓、DerivedData、中间产物分独立 APFS 卷,并行度先纸面预算再压测。

五、落地 FAQ(节选)

  • match 与手动 p12 混用?同一 Job 定好导入/清理顺序,防重复项错误。
  • 共享机防串味?独立 $HOME 前缀、临时钥匙串、provisioning 沙箱 + 全局签名槽位。

在 Mac mini 上把「签名 + 编译」压测跑实

策略落地依赖可重复 macOS 基线、统一内存与磁盘余量Apple Silicon 扛多 Job;Mac mini M4 待机约 4W、静音适合作 Runner;Gatekeeper、SIP、FileVault 收敛长驻面。独占机先验证只读仓、临时钥匙串与签名槽位,再扩共享池——Mac mini M4 仍是 2026 年高性价比起点;打开 Macstripe 首页 开通云 Mac,把并发与 NVMe 曲线跑清再混跑多仓。