macduty

ガイド

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がスリープしないようにします。

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Homebrewをインストールします。

ssh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

ビルドが管理者アカウントで実行されないよう、ランナー用に別のユーザーを作ることをおすすめします。

ssh
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -

以降の手順は、そのユーザーでログインして行います。

2. Xcodeをインストールする

SSH経由でいちばん簡単なのは`xcodes`を使う方法です。

ssh
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes select

ライセンスに同意し、初回起動の処理を済ませます。

ssh
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS

3. ランナーを登録する

GitHubでリポジトリを開き、Settings、Actions、Runners、New self-hosted runnerの順に進みます。macOSとARM64を選びます。

GitHubに、現在のバージョンとトークンを含む正確なコマンドが表示されます。次のような形です。

ssh
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. サービスとして実行する

ssh
./svc.sh install
./svc.sh start
./svc.sh status
GitHubYour repositoryActions queues the jobMac mini, our rackactions.runner service, launchdXcode, simulators, signing keychainIts own diskDerivedData, SwiftPM and CocoaPods caches stay warmthe runner dials out, HTTPS 443jobs and logs come back on itNothing listens on the Mac.No inbound port, no address to expose.
サービスが動き出せば、全体のつながりは次のとおりです。

これで、ランナーはユーザーセッションとともに起動します。ジョブでUIテストを実行する場合やログインキーチェーンが必要な場合は、システム設定の「ユーザとグループ」でランナー用ユーザーの自動ログインをオンにします。この操作は画面共有から行えます。FileVaultがオンの間は自動ログインを使えません。

5. ワークフローで使う

.github/workflows/ios.yml
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と古いシミュレータは時間とともに大きくなります。
ssh
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%以上安い

  • 16GB

    ユニファイドメモリ、120 GB/s

    コア
    10 CPU, 10 GPU
    ストレージ
    在庫状況
    在庫あり
  • 一番人気
    24GB

    ユニファイドメモリ、120 GB/s

    コア
    10 CPU, 10 GPU
    ストレージ
    在庫状況
    在庫あり
  • 32GB

    ユニファイドメモリ、120 GB/s

    コア
    10 CPU, 10 GPU
    ストレージ
    在庫状況
    在庫あり
Visa Mastercard SEPA振込価格はEUR表示です。VATは該当する場合、お支払い手続き時に加算されます。 最低1か月、その後はどの月でも解約できます。

次へ