ガイド
Mac miniでGitHub Actionsのセルフホストランナーを動かす
専用のMac miniにGitHub Actionsのセルフホストランナーを構築します。Xcodeをインストールし、ランナーを登録してサービスとして動かし、ビルドを高速かつ非公開に保ちます。
30分、2026-09-15更新
GitHubがホストするmacOSランナーは共有マシンです。混雑する時間帯は待ち行列ができ、毎回コールドスタートになり、分単位で課金されます。
自分のMac mini上のセルフホストランナーなら、すぐに起動し、ビルド間でキャッシュを保持し、毎月同じ料金で済みます。
このガイドの所要時間は約30分です。必要なものは次のとおりです。
- Apple silicon搭載でSSHでアクセスできるMac mini
- GitHubのリポジトリまたはOrganizationの管理者権限
- XcodeをダウンロードするためのApple ID
1. Macを準備する
SSHでログインし、Macがスリープしないようにします。
sudo pmset -a sleep 0 disksleep 0 displaysleep 0Homebrewをインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"ビルドが管理者アカウントで実行されないよう、ランナー用に別のユーザーを作ることをおすすめします。
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -以降の手順は、そのユーザーでログインして行います。
2. Xcodeをインストールする
SSH経由でいちばん簡単なのは`xcodes`を使う方法です。
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes selectライセンスに同意し、初回起動の処理を済ませます。
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS3. ランナーを登録する
GitHubでリポジトリを開き、Settings、Actions、Runners、New self-hosted runnerの順に進みます。macOSとARM64を選びます。
GitHubに、現在のバージョンとトークンを含む正確なコマンドが表示されます。次のような形です。
mkdir actions-runner && cd actions-runner
curl -o actions-runner-osx-arm64.tar.gz -L <download URL from GitHub>
tar xzf ./actions-runner-osx-arm64.tar.gz
./config.sh --url https://github.com/<owner>/<repo> --token <token>トークンは1時間で失効するため、すぐに登録してください。`config.sh`でラベルを聞かれたら、`xcode`や`m4`など、ワークフローで使うラベルを追加します。
4. サービスとして実行する
./svc.sh install
./svc.sh start
./svc.sh statusこれで、ランナーはユーザーセッションとともに起動します。ジョブでUIテストを実行する場合やログインキーチェーンが必要な場合は、システム設定の「ユーザとグループ」でランナー用ユーザーの自動ログインをオンにします。この操作は画面共有から行えます。FileVaultがオンの間は自動ログインを使えません。
5. ワークフローで使う
name: iOS build
on: [push]
jobs:
build:
runs-on: [self-hosted, macOS, ARM64]
steps:
- uses: actions/checkout@v4
- name: Build
run: xcodebuild -scheme MyApp -destination 'generic/platform=iOS Simulator' buildコミットをプッシュします。ジョブがActionsに表示され、数秒以内にMac上で開始されます。
6. 健全な状態を保つ
- プライベートリポジトリに限定する。パブリックリポジトリでは、フォークからのプルリクエストがMac上でコードを実行できてしまいます。GitHubは、パブリックリポジトリでのセルフホストランナーの利用を推奨していません。
- ときどき掃除する。DerivedDataと古いシミュレータは時間とともに大きくなります。
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable- 署名。証明書は専用のキーチェーンに保管するか、fastlane matchを使います。
- アップデート。ランナーはデフォルトで自動アップデートされます。Xcodeはリリースの途中ではなく、自分の都合のよいタイミングでアップデートしてください。
専用のMac miniを使う理由
- 他の誰も使わない。プッシュした瞬間にビルドが始まります。
- キャッシュが温まった状態。DerivedData、Swiftパッケージ、CocoaPodsがディスクに残るため、差分ビルドが大幅に速くなります。
- 実機のチップ。ユーザーと同じApple siliconでテストできます。
- 月額定額。分単位の課金はなく、忙しいスプリントの終わりに予想外の請求が来ることもありません。
MacDutyはEU内のラックに、macOSをインストール済みのM1からM6までのMac miniを用意しています。SSHキーはマイページから追加してください。
本日在庫あり
これらは現在ラックに設置済みです。1台選んで付属するものを確認し、アカウントは注文時に作成するだけで済みます。
ラックを確認中
お客様専用のMac mini
構成を選んでください。在庫がない場合はメールアドレスを残していただければ、ラックに設置した日にご連絡します。
年額:月払いより19%以上安い
次へ