DevOps / CI·CD 2026年3月31日

クラウド Mac mini M4 上の GitHub Actions セルフホスト macOS Runner(2026 実践ガイド)

MacXCode エンジニアリングチーム 2026年3月31日 約12分

GitHub の macos-latest ホストランナーは手軽ですが、iOS チームではキャッシュの冷え込み、リリース週のキュー遅延、エフェメラル環境に載せられない社内ツールなどの壁に当たりがちです。リースした Apple Silicon Mac 上の セルフホスト Runner なら、DerivedData の永続化、性能の予測可能性、リージョン選択が得られ、HK / JP / KR / SG / US など開発者近傍に置けます。経済性は Mac mini M4 レンタル vs 購入 で比較したうえで、SSH で届く実機に Actions を載せる前提の記事です。

2026年、セルフホスト macOS Runner が効く場面

  • 長い xcodebuild パイプライン — ウォームキャッシュで毎回数分短縮。
  • カスタム SDK や社内フレームワーク を一時ランナーに載せられない場合。
  • コンプライアンス — 契約上コントロールする Mac のみでジョブを完結させたい。
  • 並列リリース — アプリごとに Runner とキーチェーンを分離。
現実: セルフホスト Runner はリポジトリから任意コードを実行します。本番サーバと同レベルで鍵認証のみ、専用 OS ユーザー、トークンのローテーション、監視を当ててください。

./config.sh の前に済ませるセキュリティ

管理項目 推奨
SSH 面 鍵のみ、非標準ポート、可能なら IP 許可リスト。
Runner ユーザー 非管理者の自動化アカウント。sudo は必要最小限。
シークレット GitHub Environments と必須レビュアーで本番デプロイジョブを守る。
ワークスペース 機密リポでは _work を掃除するかジョブごとに捨てディレクトリを使う。

MacXCode ノードでの導入手順

  1. SSH 接続 — リースメールのポートとユーザーで入り、Xcode CLT またはフル Xcode を確認。
  2. ディレクトリ作成mkdir ~/actions-runner && cd ~/actions-runner
  3. Runner 取得 — GitHub の「Add runner」(Settings → Actions → Runners)から macOS arm64 の tarball URL をコピー。
  4. 設定 — 短寿命トークンで ./config.sh --url https://github.com/ORG/REPO --token RUNNER_TOKEN
  5. ラベルmacxcode-m4ap-sgxcode16 などプールを識別できるタグを付与。
  6. サービス化./svc.sh install./svc.sh start で再起動後も常駐。

初回キーチェーンなど GUI が要る作業は一度 VNC で済ませ、その後はヘッドレスで GitHub ジョブへ — 流れは クラウド Mac の SSH と VNC と同じです。

Workflow の例

runs-on: [self-hosted, macxcode-m4]

Xcode の固定はセットアップステップで DEVELOPER_DIRxcode-select。署名資産は Runner ユーザーのログインキーチェーンに置き、CI 向けに security set-key-partition-list を設定。Archive まわりは リモート Xcode ビルドガイド を参照。

GitHub ホスト vs リース M4 セルフホスト

観点 GitHub ホスト セルフホスト クラウド Mac
セットアップ インフラゼロ 初回の Runner インストール
キャッシュ コールドスタート ディスク永続
リージョン 限定的 HK/JP/KR/SG/US ノードを選択
セキュリティ責任 GitHub 管理 SSH と OS のハードニングは自前

FAQ

質問 回答
1 台の Runner で複数リポを回せるか 組織レベルでは可能だが、シークレットは分離し、本番と実験用は別マシンも検討。
GitLab や Jenkins は? 考え方は同じ。ベア M4 + SSH の話はそのまま。エージェントのインストーラだけ差し替え。
ネットワーク図はどこ? MacXCode ヘルプ の SSH/VNC トポロジ例を参照。

GitHub Actions ホストに Mac mini M4 を選ぶ理由

Runner は Swift コンパイルで時間を使います。M4 の性能コアと高速 NVMe がキュー遅延を抑えます。過剰な VM と違い、Mac mini はアイドル時の消費電力が小さく、夜間にワークフローが止まっても常時オンが現実的です。MacXCode は世界各地で 物理 Apple Silicon を SSH と任意の VNC で提供し、GitHub のラベル設計とそのまま噛み合うフットプリントです。

料金 からノードを確保し、チェックリストを済ませて Runner を登録し、最初の workflow_dispatch を流せば、2 回目のビルドから差を実感できます。

専用 M4 で GitHub Actions

ベアメタル · グローバルノード · 数分で SSH 利用可