クラウド Mac mini M4 上の GitHub Actions セルフホスト macOS Runner(2026 実践ガイド)
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 とキーチェーンを分離。
./config.sh の前に済ませるセキュリティ
| 管理項目 | 推奨 |
|---|---|
| SSH 面 | 鍵のみ、非標準ポート、可能なら IP 許可リスト。 |
| Runner ユーザー | 非管理者の自動化アカウント。sudo は必要最小限。 |
| シークレット | GitHub Environments と必須レビュアーで本番デプロイジョブを守る。 |
| ワークスペース | 機密リポでは _work を掃除するかジョブごとに捨てディレクトリを使う。 |
MacXCode ノードでの導入手順
- SSH 接続 — リースメールのポートとユーザーで入り、Xcode CLT またはフル Xcode を確認。
- ディレクトリ作成 —
mkdir ~/actions-runner && cd ~/actions-runner。 - Runner 取得 — GitHub の「Add runner」(Settings → Actions → Runners)から macOS arm64 の tarball URL をコピー。
- 設定 — 短寿命トークンで
./config.sh --url https://github.com/ORG/REPO --token RUNNER_TOKEN。 - ラベル —
macxcode-m4、ap-sg、xcode16などプールを識別できるタグを付与。 - サービス化 —
./svc.sh installと./svc.sh startで再起動後も常駐。
初回キーチェーンなど GUI が要る作業は一度 VNC で済ませ、その後はヘッドレスで GitHub ジョブへ — 流れは クラウド Mac の SSH と VNC と同じです。
Workflow の例
runs-on: [self-hosted, macxcode-m4]
Xcode の固定はセットアップステップで DEVELOPER_DIR や xcode-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 回目のビルドから差を実感できます。