2026 大規模 Monorepo をマルチリージョン Mac Mesh でビルドする: 影響範囲ビルド、キャッシュキー、ファンアウト、トリガー規則

フルと affected · キャッシュキー · 読み取り専用ファンアウト · 六段ゲート

2026 Mac Mesh Monorepo 影響範囲ビルド

大規模Monorepoを複数のリモート Mac Meshで回すチームは、キャッシュキーのずれ、affected グラフと Runner ラベルの不一致、未完のキャッシュ取得でキューを浪費しがちです。本稿ではフルビルド、affected、専用ヘビーノードの意思決定表、再現可能な入力境界読み取り専用ファンアウト六段のゲートを示します。成果物ファンアウトおよびMerge Queue と Runner ラベルと併読してください。

01

マルチリージョン Mac Mesh で affected が「見かけ上だけ緑」になりやすい理由

影響範囲ビルドは変更グラフ、ロックファイル、ツールチェーン指紋の一致に依存します。対話セッションと無人ジョブが同じプレフィックスを共有すると、幽霊依存がキーを汚染し、メトリクスに現れないまま affected が膨張します。

キャッシュとアーティファクトはバイト経路、本稿はグラフの刈り込みトリガーです。

  1. 01

    グラフとラベルの漂移:Runner ラベルごとにワークスペースルートが異なり affected 集合が食い違う。

  2. 02

    ロックファイルがキーに無い:解決結果は変わったのに古い tarball がヒットする。

  3. 03

    ツールチェーン指紋欠落:マイナー Xcode 差分が manifest に無くサイレント不一致。

  4. 04

    ファンアウトと計算の混線:読み取り専用のはずのコンシューマーがキャッシュへ書き込む。

  5. 05

    フルへの戻し条件が無い:共有カーネルや codegen 変更でも affected のみ固定。

02

フル、affected、専用ヘビーノードのトリガー表

マルチリージョンのリモート Mac プール向けの観点です。

観点フル優先affected 優先ヘビー分離
変更種別コード生成、ビルドスクリプト、共有ネイティブ境界単一アプリ内の UI と文言夜間バッチと日中 PR が同一プールを奪い合う
シグナルaffected が連続失敗または統合テストが不安定グラフとロック検証が安定CPU は空いているが壁時計が伸びる
キャッシュキーツールチェーン重みを上げ一時的に再利用停止ロックハッシュ+変更ハッシュ+ Runner OSヘビー専用プレフィックスと読み取り専用ミラー
リージョン単一 manifest 世代で開始ミラー遅延は許容、主プレフィックスへの書き戻し禁止プライマリが書き、衛星が読む
フルへ戻す保護ブランチ統合後の最初のグリーン前週次の照合フル大きな Xcode 切替週はフル週間

再現可能な入力を凍結してから affected を調整します。

03

コミットからファンアウトまでの六段ゲート

共有プール SSHが前提です。海洋越えのバイトは成果物ガイドのリースと manifest を適用します。

  1. 01

    入力三重項:コミット、ロックダイジェスト、xcodebuild 指紋をヘッダに固定します。

  2. 02

    単一グラフ:固定ラベルで解析し、影響パッケージ一覧を artifact 化します。

  3. 03

    フル閾値:codegen や共有カーネル、ツールチェーン更新リストに当たればフルへ短絡し理由コードを残します。

  4. 04

    プライマリ書き込み:主ビルダーのみが書き、衛星は読み取り専用です。

  5. 05

    ファンアウト検証:ハッシュとサイズの二重検証後にポインタを切り替えます。

  6. 06

    再試行と戻し:ネットワークは指数バックオフ、チェックサムはインシデント化し次コミットはフル強制です。

bash
CACHE_KEY="${CI_COMMIT_SHORT_SHA}:${LOCKFILE_SHA256}:$(xcodebuild -version | shasum -a 256 | cut -c1-12)"
export TURBO_REMOTE_CACHE_SIGNATURE="${CACHE_KEY}"
echo "affected=$(npx turbo run build --dry=json | jq -r '.packages | length')" > "${CI_PROJECT_DIR}/affected.meta"

注:Turbo は Nx や Bazel に置換可能です。権威ある単一グラフと単調なキーが本質です。

04

同時編集と読み取り専用ファンアウト

二つの PR が共有パッケージを動かすとプレフィックスが交錯します。書き込み主体は CI プライマリに限定します。

シートロックの lease id をパスに埋め込み、観測可能なタスクチェーンのエンベロープに affected 数とフル短絡フラグを載せます。

警告:書き込み権限を閉じる前に多地域ファンアウトを開かないでください。

  1. A

    単一ライター:プレフィックスごとに同時に一リースのみ書き込み。

  2. B

    コンシューマ条件:manifest 世代が current の後にコンパイル開始。

  3. C

    人的ゲート:二回連続チェックサム失敗で affected を凍結し署名付きフルまで停止。

05

チケット化できるパラメータ

以下は計画の出発点であり SLA ではありません。

夜間 affected と IDE インデックスが同じディスクを叩くと CPU だけでは誤診します。

  • 週次フル照合:幽霊依存を捕らえるため最低週一回はフルか主幹照合を置きます。
  • 解析タイムアウト:PR 予算の合意比率を超えたらシャード化または専用 Runner へ移します。
  • 世代の単調性:ツールチェーン更新は必ず世代を上げ全消費リージョンへ通知します。
チーム信号初期姿勢ファンアウト
小規模単一リージョン主ビルドとローカル affected扇出は小
マルチ PRプライマリ書き込みと衛星読み取りrsync かオブジェクトストレージと結合
夜間エージェントヘビーノードを対話プールから分離共有キー枯渇を防ぐ

個人ノートをゲートウェイにするとスリープと帯域の揺らぎで同時に損失が出ます。

契約化されたノードと監査可能な帯域が必要な iOS 継続的デリバリーと夜間 AI ワークロードでは、VpsMesh の Mac Mini クラウドレンタルが通常より適した選択です。ヒット率とキュー深度を同じレビュー表に載せられます。

FAQ

よくある質問

コード生成、ビルドスクリプト、共有ネイティブ、ツールチェーン更新、保護ブランチ後の最初のグリーン前はフルが安全です。詳細は成果物マトリクスを参照してください。

コミットまたは変更ダイジェスト、ロックハッシュ、ツールチェーン指紋、Runner OS、ファンアウトでは世代とリース ID です。リージョンは注文ページを確認してください。

ヘルプセンターのリモート項目と価格ページを確認してください。