2026 年、Runner を増やす前に潰すべき五つの読み違い
GitHub で自ホスト macOS を運用するときの最初の炎上はインストーラというより、多くのリポジトリへ Secrets をばらまいたまま単一の Runner グループへ macos-ci のような曖昧ラベルだけを張る設計から生じます。GitHub Hosted の分数は華やかでも、プライベートレジストリが遠ければ SPM や CocoaPods の解決フェーズが壁時計を支配し、Apple Silicon のコア数では埋まりません。xcodebuild の出力を凍結でき、launchd 上で eviction 方針まで固定できる専用レンタルが価値を持ちます。
次の五つは水平二重化の保留条件です。テレメトリでアーティファクト平面が揃って初めて増設を議論してください。
Xcode パッチ差分をフレーク扱いする:緊急パッチで二台のマイナーがずれ、Codesign が壊れてもワークフロー前半の lint だけが緑に見える。
有人トラブルシュートと無人公証を同一ログインで混在:環境変数の手作業が夜間ジョブのキーチェーンACLと衝突します。
Org 継承だけを見て爆発半径を無視:広い PAT が数十リポジトリに刺さると Runner 侵害時の影響範囲が線形ではありません。
concurrency を放置:語義ブランチに紐付かないグループ名だけでマージキューと夜間マトリクスがぶつかります。
ホスト分課金と専用機をコア数だけで比較:ホスト側にはパッチ運用が込み、ベアメタルにはオンデューティとキー儀式の人件費が乗ります。
予算は「識別」「イメージ」「キュー owner」の三本柱で揃えます。trace にレジストリ RTT が支配的なら、まず地域表とキャッシュを見直し並列度のせいにしないでください。
GitHub Hosted/専用レンタル/Xcode Cloud の三つの列を財務の言葉へ
GitHub も Apple も同じ制約を最安に束ねるわけではありません。ホスト macOS はワークフローを短命に保てるときに強く、専用機はピン留めしたツールチェーンと長寿命キャッシュ、アーカイブの再現実演に向きます。Xcode Cloud は ASC と TestFlight に沿った黄金経路を優先します。成熟チームは三つを意図的に併用します。
| 次元 | GitHub Hosted | 専用 Apple Silicon(レンタル) | Xcode Cloud |
|---|---|---|---|
| 向き | 雑多プラットフォーム、低頻度 mac ジョブ | pinned Archive、SPM キャッシュ、署名リハーサル | ASC と接続したネイティブ scheme |
| キュー | 共有プールの分散 | 契約上の温度と concurrency 上限で制御 | Apple サブスク階層のバースト |
| 経済 | 分課金・運用軽い | 月次 opex と工程オーナーの工数 | 定額と超過の組合せ |
| 運用 | カスタム制約多し | シェル自由度最大、イメージ規律必須 | SSH より scheme 中心 |
| 信号 | 組織 Runner と共有キャッシュ優先 | リポジトリ別フリート優先 |
|---|---|---|
| ID | OIDC で監査線が揃う | 顧客隔離で鍵を閉じたい |
| ワークロード | 似た iOS リポが多数 | 巨大 mono-repo でだけ成立する設定 |
| 人員 | プラットフォームが Xcode 週次を握る | 機能チームごとに minor が合わない |
CPU 枠より先に識別境界とアーティファクト平面を買う。
二台目の話題は 二ノード記事 の前提に立ち返り、アーティファクト RTT が本命かを先に測ります。
YAML:concurrency と runs-on をインフラ文書に昇格させる
runs-on: を self-hosted だけで止めると運用側がラベルを勝手に解釈します。geo、artifact_plane、workload を文字列へ埋め、Terraform レビューで grep 可能にしましょう。Secrets は爆薬です。ワークロード・アイデンティティ優先へ。
concurrency:
group: ios-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on:
- self-hosted
- macOS
- region-usw
- workload-pr-smoke
メモ:ラベルの同義語を増やすほど dormant Runner が残り続けます。
規制ドキュメントの横に出口ポリシーを置く場合は ヘルプセンター の接続資料と同一チケットで管理します。
六つの段階的導入手順(グレースケール前提)
フィンガープリントを凍結:xcodebuild -version とロックファイルを変更票へ。
自動化 ID を分離:署名と有人作業でキーチェーンを分ける。
launchd で常駐:tmux での恒久運用を避ける。
読み取りのみのスモークを先:シークレット無し。
公証フェーズ:notarytool の証跡と二重承認を残す。
concurrency 実験:P95 を並列度より先に評価する。
三週間で CFO に貼れる三つの指標
キュー P95:ラベル分割後も最初のステップ開始まで時間が SLA を超えるか。
resolver 比率:依存フェーズがトレースの何%か。
ドリフト件数:イメージ差だけ起因する赤字ビルドを数える。
注意:パッチの人件費を載せず比較すると数字は必ずホスト側に歪みます。
家庭用回線や不安定 KVM の上より、プライベートレジストリと同じ出口に載る専用 Apple silicon で Actions の再現グラフが保てます。KVMNODE の Mac mini クラウドレンタルは運用側に優しい選択肢になりやすく、アジア太平洋と北米の都市に透明な SKU と日〜月の変形可能レンジを揃え、チャットだけに残った concurrency を購買記録へ戻します。