2026 レンタル Mac mini M4 16GB の GitHub Actions セルフホストランナー:スコープ表、ワークスペース・ディスク、2並列ジョブ、シークレット衛生、12段スモーク
GitHub Actions のセルフホストランナーは「無料の macOS 分」ではなく、財務・ディスク・メモリの契約です。 チームは 16GB ユニファイドメモリ の Mac mini M4 レンタルホストを、予測可能な Xcode/Fastlane/SwiftPM、温かい DerivedData、アジア太平洋のレビュア近くの egress が必要なときに選びます。本稿は 16GB に載せるワークフロースコープ、ワークスペースと Actions キャッシュの APFS 消費、実務上の上限である 2 並列ジョブ、登録トークンの git 除外、6 リージョンの待ち時間、本番前に証明する 12 段スモーク を整理します。
公式の出発点:GitHub セルフホストランナー公式ドキュメントを Slack に貼る前に読んでください。ハードウェアは Apple Mac mini 仕様(M4 クラス)に合わせます。
開示:本記事の Mac レンタルは KvmZone サービスです。料金は公開レート、ハードウェアは Apple 公式 Mac mini 仕様に基づきます。
ランナースコープ表:レンタル M4 16GB に載せるもの
セルフホストランナーは macOS 専用ステップ(署名、公証、シミュレータスモーク)や Xcode マイナーを固定したいときに有効です。16GB を 64GB Linux ファームのように扱い、測定なしで統合を6本並べると失敗します。
| スコープ | 典型ステップ | 16GB | メモ |
|---|---|---|---|
| ライト CI | lint・単体・フル Archive なし swift build | 推奨 | Pair with Git shallow/sparse マトリクス |
| リリースレーン | Archive・Fastlane・TestFlight | 同時1ジョブ | See Fastlane TestFlight マトリクス |
| エージェント hook | CI 横の webhook | ホスト分割 | Cross-read OpenClaw webhook CI 連携 |
| 重量 ML / Docker | GPU 前提のマルチコンテナ | 不適 | Linux ホストランナーか大型機へ |
ラベル・グループ・Org 境界
- 複数リポで Xcode を共有するなら Organization 登録。実験のみリポレベル。
- 財務が読めるラベル:
macos-m4-16gb-tokyo、release-lane、ci-light(fastは不可)。 - 許可リポを社内 allow-list に記載。セルフホストは許可リポの workflow を信頼します。
Actions ワークスペースのディスク表
GitHub Actions は _work/ に checkout を展開し、ツール別にキャッシュします。レンタル Mac mini では APFS 空きが隠れたキュー殺し—DerivedData と actions/cache が 256GB SKU を共有すると swap が増幅します。
| 信号 | 黄帯 | 対応 |
|---|---|---|
| ジョブ前 APFS 空き | <18GB | 新規ジョブ停止・キャッシュ整理・1TB検討 |
| マルチリポ checkout | >40GB working tree | Git ディスク表の shallow+sparse |
| DerivedData+Archive | >80GB steady | 週次掃除または 2TB |
| Actions キャッシュ | >30GB per repo | キャッシュキー整理・リリースホスト分割 |
ディスクの真実: SSD 拡張は RAM を増やしませんが、2 ジョブが短時間重なるときの swap 停滞を下げます—「queued」謎の1週間より安いです。
16GB ユニファイドメモリの並列ジョブ
Apple Silicon は CPU/GPU/システムで 16GB を共有します。16GB ホストでは混在レーンで macOS ジョブ2本を上限、フル Archive やシミュレータ統合は 1本にします。
| 並列方針 | 用途 | メモリ |
|---|---|---|
| max-parallel: 1 | リリース Archive・Fastlane 夜 | 30分ジョブ後 swap 差 <15% |
| max-parallel: 2 | 別リポの lint+単体、軽量 Node | swap が基準超なら メモリプレイブックで中断 |
| 第2レンタルホスト | リリース+webhook 24/7 | sysctl 微調整より安い |
フレーク調査では ACTIONS_RUNNER_HOOK_JOB_STARTED で memory_pressure をログ化—財務はグラフを好みます。
シークレット・SSH・ランナー衛生
セルフホストは workflow YAML の任意コードを実行します。セキュリティは ホスト衛生+シークレット経路であり「プライベート=安全」ではありません。
- 専用 macOS ユーザーでランナーを入れ、SSH と VNC のワークフローで運用。
- PAT とクラウド鍵は Organization secrets。ログに
RUNNER_TOKENを出しません。 - 再プロビジョニング後は登録トークンをローテーション。
.runnerが持ち出されたら侵害扱い。 - ランナーは
launchdKeepAlive。再起動手順は Runbook に。
CI ランナーの6リージョン配置
KvmZone ノード:香港、日本(東京)、韓国(ソウル)、シンガポール、米国東、米国西。SaaS の CDN 表記ではなく、PR をマージしログを読む人に近いノードを選びます。東京ノードは JP レビュアとコンプライアンス文書に向きます。
| プロファイル | リージョン | 併読 |
|---|---|---|
| CN 営業時間モバイル CI | 香港またはシンガポール | Git shallow 表 |
| JP コンプライアンス+レビュア TZ | 東京 | Fastlane POP 表 |
| ソウルレビュア横の KR 自動化 | 韓国(ソウル) | 並列レンタル表 |
| 米国太平洋夕方バッチ | 米国西 | OpenClaw webhook レーン |
| EU 引き継ぎ | 米国東 | 第2ホスト分割 |
ランナーラベルを固定する前に 料金ページでリージョンを Compare—egress と TZ が CPU 表より重要です。
12段ランナースモーク
導入後または Xcode 更新後に実施。財務の週次 ID とスクリーンショットを保存します。
| 段 | ゲート | 合格 |
|---|---|---|
| 1 | SSH | ランナーユーザーで非対話シェル |
| 2 | GitHub 到達 | curl -I https://github.com プロキシ意外なし |
| 3 | ランナーサービス | launchctl リスナー稼働 |
| 4 | Org 登録 | GitHub UI でラベル確認 |
| 5 | Xcode select | xcode-select -p Runbook マイナー一致 |
| 6 | ディスク空き | ≥18GB システム APFS 空き |
| 7 | ワークフロードライラン | lint のみのテスト分支で緑 |
| 8 | キャッシュパス | ジョブ後キャッシュ上限内 |
| 9 | メモリ | 20分後 swap 差 <15% |
| 10 | シークレット | Actions ログにトークンなし |
| 11 | リージョン | Runbook+ラベルにノード記載 |
| 12 | 財務 | 週次 ID と料金スクショ |
9–10 が失敗なら GitHub キューを責める前に メモリ圧迫を切り分けます。
FAQ
関連記事
- Xcode 27: ネイティブ coding agents — Cursor 月額との比較
- Git shallow/sparse マルチリポ ディスク表 — checkout 規律
- Fastlane TestFlight SSH 署名 POP 表 — リリースレーン
- ユニファイドメモリ swap プレイブック — swap 切り分け
- レンタル期間×並列ライトジョブ表 — 第2ホスト条件
- リモート Mac SSH と VNC — アクセス衛生
- OpenClaw webhook CI 連携 — CI 横のエージェント