按天云 Mac Runner 适合短周期试错与突发提审,但证书不能随会话漂移。把 Fastlane Match 加密 Git 当作唯一真源,Runner 只做 match readonly 写入钥匙串,才能把多人多 Job 从手工拷贝收敛成可审计命令。下文整理仓库形态、只读 HTTPS 与多 Job 冲突矩阵及 Checklist。
Match 与加密 Git:短周期里别省这一步
Match 把证书、私钥与 profile 的版本绑进 Git。短周期里常见翻车是云机上手工导出 p12、另一 Job 又覆盖钥匙串。应单独建私有仓并加密;CI 只持只读 deploy key / PAT 与 MATCH_PASSWORD。磁盘可还原时,把 Git 密文当作唯一回放入口,钥匙串仅作会话缓存。
只读 HTTPS:令牌、DNS 与「能 clone 却不能 match」
CI 侧优先 HTTPS + 细粒度 token。典型故障是主仓能 clone、Match 仓在另一 host 或二级鉴权,签名阶段才红。Match 仓与主仓同区低延迟,首跑用 git ls-remote 探测;令牌只开读权限。自签 CA 须预装进镜像,否则 Ruby 层 TLS 失败易误判为 Xcode 问题。
# 只读:不写回 certs repo MATCH_READONLY=true MATCH_GIT_BASIC_AUTHORIZATION=<base64(user:token)> MATCH_PASSWORD=<openssl 加密口令> # 云 Mac 多会话:固定钥匙串路径,避免默认 login 互相污染 MATCH_KEYCHAIN_NAME=ci_match.keychain
多 Job 证书冲突:一页决策矩阵
同一 Runner 上并发 Archive,最危险的是两个 Job 同时 match nuke 或写同一把 distribution 证书。用「是否允许改仓」与「是否共享钥匙串」两维切分:
| 场景 | 症状 | 推荐处置 |
|---|---|---|
| 多 Job 共享 login 钥匙串 | 随机 codesign 失败、identity 列表抖动 | 每 Job 独立 keychain;或 Runner 标签串行「签名阶段」 |
| 只读 CI 误开写入 | Match 尝试提交、Git 403 或半提交状态 | 强制 MATCH_READONLY;写操作只在受控维护窗口 |
| 多 App ID / 多 target | profile 类型混用、Export 选项不匹配 | 按 app_identifier 分 Git 分支或分目录;lane 显式传 type |
| 按天机器重建 | 首次编译慢、钥匙串 ACL 弹窗(若有 UI) | 无人值守用 security set-key-partition-list;镜像预装匹配 Xcode |
可执行 Checklist FAQ
Runner 开通后的 30–60 分钟里,建议按 云 Mac Runner 网络自检与最小权限令牌清单 做完网络与令牌,再叠加下面签名专项:
- Q:关机后证书会丢吗? — A:钥匙串会丢,Match 仓不会;无需导出 p12,下次只读 clone + 解密即可。
- Q:SSH 还是 HTTPS? — A:SSH 需管 known_hosts 与 key 轮换;HTTPS+PAT 更易只读审计。
在云端 Mac mini 上,签名与出包更稳
Fastlane Match 与 Xcode 链路在 macOS 上原生贯通:Apple Silicon 统一内存让 Archive 与代码签名阶段的峰值更平滑;macOS 的钥匙串与 Gatekeeper、SIP 组合,比在非苹果硬件上模拟环境更接真实发版面。按天云 Mac mini M4 约 4W 级待机功耗,适合作为短周期 Runner 常驻或夜间 burst,长期电费与噪音成本也低于同档台式工作站。
对需要频繁试错证书与描述文件的团队,把 Runner 固定在同一套镜像与 Xcode 小版本上,能显著减少「本机绿、CI 红」的扯皮;VPSSpark 云端节点提供可预期的硬件与网络出口,便于你做 HTTPS 与 DNS 的自检基线。
如果你正在把 iOS 签名从人肉拷贝迁到可审计流水线,VPSSpark 云端 Mac mini M4 是值得优先试跑的环境——立即了解套餐方案,让 Match 与 Runner 在同一套稳定硬件上闭环。