想定読者:シンガポール、日本、韓国、香港、米国東部、米国西部などでリモート Mac 上の CI を運用しつつ、主 Git、Docker レジストリ、成果物ストアが別大陸にあるチーム。夜間ジョブが git fetch、レイヤ pull、成果物ダウンロードで停滞しがちです。成果:トポロジの意思決定は成果物近接マトリクスに任せ、トポロジが凍結している間は本 Runbook でタイムアウト、低速打ち切り、指数バックオフ、同時実行上限をテンプレートに焼き込みます。構成:典型的な誤読、地域間リンクの対照表、Git/Docker の調整項目、六段階手順、KPI、締めの運用指針です。
Apple Silicon はコンパイルの上限を押し上げますが、パイプライン時間はしばしば大洋横断の転送の繰り返しに頭打ちになります。同じワークフローはノート PC では一瞬でも、Git のホームリージョンとずれたランナーでは長時間の尾部に化けます。運用で繰り返される誤読を六つ挙げます。
GIT_HTTP_LOW_SPEED_LIMIT / GIT_HTTP_LOW_SPEED_TIME が無いと失敗が無関係なステップに見え、トリアージを誤ります。git プロセスと TLS・DNS に負荷を掛けます。セルフホストランナーのチェックリストを重ねます。ランナーはジョブをマシンに割り当てますが、pull が統計的に成功するかは本 Runbook と近接マトリクスが決めます。三つを同一マイルストーンでレビューしてください。
アーキテクチャ資料と併せて、マルチリージョンのレンタルガイドと同じレビュー表に載せてください。左に事実、右に今週の優先アクションを書きます。
| シグナル | 典型的な症状 | まずやること(今週) | ハードウェアの見方 |
|---|---|---|---|
| ビルダーは APAC、主 Git は米国東部 | clone/fetch の P95 が高い、夜間に束ねて失敗 | 浅い/単一ブランチクローン、低速閾値の引き上げ、並列 git の上限、読取ミラーの検討 | CPU より先にネットワーク。リンク修正後も尾部が残るなら M4→Pro を検討 |
| プライベートレジストリが大陸をまたぐ | レイヤのタイムアウト、間欠的 5xx、pull 再試行の山 | Pull-through キャッシュ、マトリクスの収縮、ジッター付き再試行 | キャッシュ用ディスクを 1TB/2TB のアラートに結び付ける |
| 成果物が別リージョンに扇状に広がる | アップロードは通るが検証が遅い、重複ビルド | 単一ビルド+チャンク付きチェックサム、主ビルドリージョンを文書化 | ピーク期間はデータのホームに揃え、最安リージョンだけに合わせない |
| 企業の出口プロキシ | 中間者証明書、SNI や HTTP/2 の癖 | git と containerd/docker 用に許可リストを分離、TLS フィンガープリントを比較 | SSH/VNC のアクセス方針とあわせてレビュー |
監査に耐える出発点です。プレースホルダは自社の mtr、レジストリログ、パイプラインのパーセンタイルで置き換えてください。
| コンポーネント | 主なつまみ | 例/意味 | 失敗の指紋 |
|---|---|---|---|
| Git (HTTP/S) | GIT_HTTP_LOW_SPEED_LIMIT、GIT_HTTP_LOW_SPEED_TIME | 遅すぎる転送を打ち切る | 長い沈黙のあと突然失敗。マトリクス負荷下で悪化 |
| Git の深さ | --depth、--single-branch | CI の HEAD 向けにオブジェクト転送を縮小 | 並列クローンがエグレスを飽和 |
| Docker / BuildKit | レジストリミラー、max-concurrent-downloads、ビルド並列 | キャッシュ層で同時レイヤ pull を上限化 | 429、TLS リセット、レジストリへの集中嵐 |
| オーケストレータのバックオフ | 再試行、基底遅延、上限、ジッター | 同期した再試行のスタンピードを防ぐ | 分単位で揃った大量失敗 |
# Git: avoid cross-region hangs (tune per link; set in CI env)
export GIT_HTTP_LOW_SPEED_LIMIT=1000
export GIT_HTTP_LOW_SPEED_TIME=120
git fetch --depth=1 origin "+refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH}"
# Docker: example daemon concurrency (platform-specific; align with ops)
# "max-concurrent-downloads": 3,
# "registry-mirrors": ["https://your-pull-through.example"]
# Orchestrator sketch: jittered backoff
# sleep = min(cap, base * 2**attempt) + random_jitter
注:フリート展開の前に単一ジョブで検証してください。同時実行の変更を一斉に入れると、散発的な問題が確実な障害に変わります。結果が近接マトリクスと矛盾する場合は、日次レートよりデータレジデンシーを優先してください。
前提:ランナーラベルとシークレットはランナーガイドどおり分離されています。.git 資格情報とキャッシュパスを場当たりで共有しているなら、先にそこを直してください。
git fetch --unshallow の可否、単一ブランチ強制。CI で暗黙の全履歴を禁止します。ダッシュボードのタイトルはそのまま使ってください。
方向性の文脈(ベンチマークではありません):2025〜2026 年型の負荷では、冷たい大洋横断の pull と幅広いマトリクスが尾部を十分単位に伸ばすことがあります。データホームを揃えバックオフを入れる方が、P95 改善では CPU アップグレードに勝つことが多いです。
個人用スクリプトには監査証跡がありません。リージョンが変わるたびにタイムアウトとキャッシュが無効化されます。契約レベルの Apple Silicon CI には、ベアメタル分離、マルチリージョン選択、ベースとピークの期間の組み合わせ、そして Git/レジストリ方針を同じページに載せる必要があります。
データホームと揃ったエグレスのない断片化プロバイダは、チームを再試行の嵐に閉じ込めがちです。再現可能な pull 経路、リージョン横の水平拡張、本番に近い CI のシークレットモデルが必要なチームにとって、専用のマルチリージョン Mac クラウドの方が、短期ホストを回転させるより静かな運用になりやすいです。MACCOMEはシンガポール、日本、韓国、香港、米国東部、米国西部でMac mini M4 / M4 Proのベアメタルノードを柔軟な条件で提供しています。リポジトリとレジストリのある場所にビルダーを置き、公開料金と各地域ページ、マルチリージョンガイドとランナーガイドで最終調整してください。
パイロット:データホームと同じリージョンに短期レンタルしたビルダーで本稿の二週間レビューを回し、そのうえで月次/四半期や 2TB 拡張を決めます。「安いリージョン、高いリンク」という長期請求を避けてください。
FAQ
成果物近接マトリクスとどう組み合わせますか?
マトリクスはチェーンをどこに置くかを選びます。本 Runbook は移行中や凍結期間に CI を生かします。レンタル料金とマルチリージョンガイドを開き、両方の資料を同じ変更チケットに添付してください。
先に同時実行を下げますか、リージョンを移しますか?
ダッシュボードに 429、TLS リセット、同期した再試行が出るなら、同時実行を下げジッターを足します。P95 が高いままデータを動かせるならリージョン移動を計画します。詳細はヘルプセンターをご覧ください。
CocoaPods/SPM の記事との境界は?
あちらはリゾルバのソースと trunk/CDN 経路を固定します。本稿は Git リモートとコンテナレイヤを固定します。ログに pod install と git fetch の尾部が両方出るなら指標を分割し、一つのチェーンだけ最適化しないでください。