つまずきシーン(痛点)
典型は、ラベル連打で同一ブランチ並列がDerivedDataを壊すこと、SSH手動ビルドとJira CIが同一ユーザの署名コンテキストで詰まること、レーンは分かれているのにキュー深度/timeoutがなく夜間ジョブが占有することです。原因は単一のJira設定ではなく、課題フィールド・ホストmutex・CIの三層設計が欠けている場合が多いです。
SSH/協働/CIの判断
SSHは観測が抜けやすいので短時間・別ワークツリーに寄せ、Jira CIは非対話固定にします。日次10件未満なら単一ノード+flockでも可。PR併用ならconcurrencyをrepo+laneで分離(ワークツリー並行)。Jiraは起票、並行制御はRunner/merge queue側へ寄せると安定します。
ラベル→ノードとロック・timeout一覧
出発基線(ラベル名・ノードIDはインベントリに合わせ、p95で調整)。
| ラベル例 | ノード/レーン | ロック | flock/上限 | timeout/退避 |
|---|---|---|---|---|
build:pr |
プールA・ci-jira-pr |
concurrency(repo+issue)+cancel-in-progress: true |
課題同時1、flockはDerivedData外のみ | Job 45〜60m、Webhook再送≤3、指数退避上限60s |
build:release |
プールB・ci-jira-release |
flock+キーチェーンは単一CS |
深さ2、flock待ち90〜120sで失敗→コメント | Job 90〜120m、429/5xxのみ指数退避 |
build:ios-nightly |
夜間C・ci-nightly |
スロット予約+concurrency: nightly-global |
同時1、待ち5件で警告 | Job 180m上限、ロック失敗は15mでリスケ |
権限隔離
Automationはサービスアカウント、Runnerは専用macOSユーザで、SSH対話とホームを分離。トークンは最小権限・短期(環境テンプレと秘密)。ゲートウェイで送出元検証し、境界はSSH・VNC・権限隔離FAQに沿って表に落とします。
Jira トリガー項目とべき等性
トリガーはラベル追加に限定し、SHA未入力は棄却。課題キー+SHA+ルールIDで重複はゲートが409。署名は出站Webhook同様に生ボディ検証。
衝突パターンFAQ
まとめと購入
タグは増やせる、mutexは増やせない
タグを増やすほど同時上限とtimeout/退避が成果を決めます。閾値が続くならノード追加でレーンにCPU余白を。