GitHub に iOS / macOS リポジトリを寄せているのに、macOS Runner のラベル衝突とキュー競合だけが毎晩残るチームに欠けているのはスローガンではなく、自ホスト Runner の配置レジストリ近接と Xcode.minor の固定方針、そして Xcode Cloud と GitHub Actions の責務境界を変更票へ書ける表です。本章は KVMNODE の独占クラウド Mac mini M4 を前提にします。第一段階では水平スケール前に排除すべき五つの読み違い、第二では GitHub Hosted 分、独占裸金属、Xcode Cloud の三列を財務承認資料の語彙で並べ、第三では concurrency と runs-on と組織キャッシュの YAML たたみ方を整理します。Xcode Cloud ハイブリッド記事二台目ノード検討 と併読すると重複見積を避けられます。
01

2026 年、Runner を増やす前に潰すべき五つの読み違い

GitHub で自ホスト macOS を運用するときの最初の炎上はインストーラというより、多くのリポジトリへ Secrets をばらまいたまま単一の Runner グループへ macos-ci のような曖昧ラベルだけを張る設計から生じます。GitHub Hosted の分数は華やかでも、プライベートレジストリが遠ければ SPM や CocoaPods の解決フェーズが壁時計を支配し、Apple Silicon のコア数では埋まりません。xcodebuild の出力を凍結でき、launchd 上で eviction 方針まで固定できる専用レンタルが価値を持ちます。

次の五つは水平二重化の保留条件です。テレメトリでアーティファクト平面が揃って初めて増設を議論してください。

01

Xcode パッチ差分をフレーク扱いする:緊急パッチで二台のマイナーがずれ、Codesign が壊れてもワークフロー前半の lint だけが緑に見える。

02

有人トラブルシュートと無人公証を同一ログインで混在:環境変数の手作業が夜間ジョブのキーチェーンACLと衝突します。

03

Org 継承だけを見て爆発半径を無視:広い PAT が数十リポジトリに刺さると Runner 侵害時の影響範囲が線形ではありません。

04

concurrency を放置:語義ブランチに紐付かないグループ名だけでマージキューと夜間マトリクスがぶつかります。

05

ホスト分課金と専用機をコア数だけで比較:ホスト側にはパッチ運用が込み、ベアメタルにはオンデューティとキー儀式の人件費が乗ります。

予算は「識別」「イメージ」「キュー owner」の三本柱で揃えます。trace にレジストリ RTT が支配的なら、まず地域表とキャッシュを見直し並列度のせいにしないでください。

02

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 と共有キャッシュ優先リポジトリ別フリート優先
IDOIDC で監査線が揃う顧客隔離で鍵を閉じたい
ワークロード似た iOS リポが多数巨大 mono-repo でだけ成立する設定
人員プラットフォームが Xcode 週次を握る機能チームごとに minor が合わない

CPU 枠より先に識別境界とアーティファクト平面を買う。

二台目の話題は 二ノード記事 の前提に立ち返り、アーティファクト RTT が本命かを先に測ります。

03

YAML:concurrency と runs-on をインフラ文書に昇格させる

runs-on:self-hosted だけで止めると運用側がラベルを勝手に解釈します。geo、artifact_plane、workload を文字列へ埋め、Terraform レビューで grep 可能にしましょう。Secrets は爆薬です。ワークロード・アイデンティティ優先へ。

YAML
concurrency:
  group: ios-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on:
      - self-hosted
      - macOS
      - region-usw
      - workload-pr-smoke

メモ:ラベルの同義語を増やすほど dormant Runner が残り続けます。

規制ドキュメントの横に出口ポリシーを置く場合は ヘルプセンター の接続資料と同一チケットで管理します。

04

六つの段階的導入手順(グレースケール前提)

01

フィンガープリントを凍結:xcodebuild -version とロックファイルを変更票へ。

02

自動化 ID を分離:署名と有人作業でキーチェーンを分ける。

03

launchd で常駐:tmux での恒久運用を避ける。

04

読み取りのみのスモークを先:シークレット無し。

05

公証フェーズ:notarytool の証跡と二重承認を残す。

06

concurrency 実験:P95 を並列度より先に評価する。

05

三週間で CFO に貼れる三つの指標

A

キュー P95:ラベル分割後も最初のステップ開始まで時間が SLA を超えるか。

B

resolver 比率:依存フェーズがトレースの何%か。

C

ドリフト件数:イメージ差だけ起因する赤字ビルドを数える。

注意:パッチの人件費を載せず比較すると数字は必ずホスト側に歪みます。

家庭用回線や不安定 KVM の上より、プライベートレジストリと同じ出口に載る専用 Apple silicon で Actions の再現グラフが保てます。KVMNODE の Mac mini クラウドレンタルは運用側に優しい選択肢になりやすく、アジア太平洋と北米の都市に透明な SKU と日〜月の変形可能レンジを揃え、チャットだけに残った concurrency を購買記録へ戻します。