ホーム・SSHとVNC選定・共有構築機の権限隔離FAQを先に揃えてからMatchを触ってください。
共有リモートMacで起きる三つの痛み
- 並行Match。 同時
match developmentで暗号化gitが破損。 - 鍵束混線。 配布証明書がloginへ入りレーンと不一致。
- 無音ハング。 flock待ちがジョブ上限超過。
判断表:レーン鍵束 vs 共有loginのみ
| 観点 | Match+レーン鍵束 | login共有のみ |
|---|---|---|
| 並行取得 | shallow+読取ロック、書込直列 | push競合・証明書欠落 |
| Codesignキュー | 1台1アーカイブ、CIは待ち行列 | 並列archiveが認証を奪い合う |
| MeshMac 2〜8席 | 共有M4の既定 | 検証機のみ |
Match gitの並行取得とshallowクローン戦略
読取は重ね、書込はmatch-repo.lockで直列化。git clone --depth 1とfetch shallowをMatch前に実行。
export GIT_SSH_COMMAND="ssh -o ControlMaster=auto -o ControlPath=/tmp/ssh-%r@%h:%p"
flock -w 180 /var/run/meshmac/match-repo.lock \
fastlane match development --readonly false
login鍵束分区(ヘッドレス署名向け)
レーンは/srv/keychains/team-a-ci.keychain-db。アンロックはCodesign内のみ。MATCH_KEYCHAIN_NAMEをlane envへ(権限FAQ参照)。
構築ロック・flock待ち・Codesignキュー待ち秒
下表をRunbookへ貼り、実測のロック待ち百分位で調整します。
| リソース | flock/キュー | ジョブ上限 |
|---|---|---|
| Match git書込 | flock -w 180 match-repo.lock |
レーン15分 |
| Codesign/archive | flock -w 600 codesign.queue |
45〜90分 |
| DerivedData同期 | flock -w 60 dd-sync.lock |
35〜60分 |
| 待ち行列深度 | レーン最大12件 | 空き15%未満で即失敗 |
失敗再試行・監査フィールド・運用シグナル
fetch一過性のみ再試行2回、鍵束失敗は0回。JSONにlane・match_git_sha・lock_wait_ms。待ちp95が120秒超×3で通知。
MeshMac共有機への導入五手順
- 凍結。 アーカイブ排水・
match nuke禁止。 - shallow。 ブランチ固定とmatch-repo.lock設置。
- 鍵束。 レーン鍵束へIdentityを一度だけ投入。
- キュー。 archiveをcodesign.queueのflockで包む。
- 監査。 JSON出力とアンロック失敗ドリル。
設計レビューに貼れる三つの目安
- shallow並行読取は共有M4のMatch冷起動を短縮し、書込競合は広げません。
- レーン鍵束はGUI loginセッションとCI署名を分離します。
- 二レーン共有時の
flock -w 600は45〜90分アーカイブの実務既定です。
FAQ:並行・鍵束・第二ノード
並行development? shallow+書込flock時のみ。nuke並行禁止。
login鍵束? 不可。レーン鍵束をCodesign内でアンロック。
第二ノード? 待ちp95が2分超のときレーンをノード分割。