ガイド

GitHub Actions用のセルフホストmacOS runner

セルフホストのmacOS runnerとは、自分で管理するMacでGitHub Actionsのジョブを実行する仕組みです。GitHubの共有クラウドマシンは使いません。runnerを一度登録し、ワークフローからそれを指定します。するとビルドは、ジョブの間もウォーム状態を保つハードウェアで動きます。

チームがホスト型macOS runnerから離れる理由

GitHubはmacOS runnerを1分あたり約$0.062〜$0.102で課金します。Linuxのおよそ10倍です。たまにビルドするだけなら、この料金でも問題ありません。毎日リリースするチームには高くつきます。マシンが自分のものになると、次の3つが変わります。

  • 使った分だけ料金が増えることはなくなります。月額固定のマシンなら、1,000分使っても20,000分使っても料金は同じです。
  • キャッシュが残ります。DerivedData、CocoaPods、SwiftPM、npmのキャッシュがローカルSSDに残ります。そのため差分ビルドでは、新しいrunnerが毎回繰り返す作業のほとんどを省けます。
  • 環境が安定します。Xcodeのバージョンは一度固定すれば済みます。他人の都合で行われるホスト型イメージの更新に合わせる必要はありません。

トレードオフも正直に

セルフホストにも欠点はあります。1台のマシンではジョブが順番に実行されます。並列の大きなマトリックスには、台数を増やす必要があります。信頼できないプルリクエストをビルドするなら、runnerのセキュリティは自分の責任です。GitHubがセルフホストrunnerをプライベートリポジトリ向けに推奨しているのはこのためです。さらに、macOSの更新、Xcodeのインストール、runnerサービスの稼働維持を誰かが担う必要があります。

MacRunは、この最後の部分を引き受けるためのサービスです。お客様は専用マシンと固定料金を手に入れます。セットアップ、監視、データ消去は当社が行います。

ワークフローの変更点

runnerの登録は、コマンドを一度実行するだけです。その後のパイプラインの変更は2行です。

 jobs:
   build:
-    runs-on: macos-latest
+    runs-on: [self-hosted, macOS, macrun-unit-01]

既存のステップ、シークレット、成果物など、それ以外はすべてそのままです。詳しい手順はセットアップガイドにあります。

自分で組むか、借りるか

余っているAppleのハードウェアと、保守する担当者がいるなら、自分のMacでのセルフホストは妥当な選択です。ハードウェアの購入、ラックへの設置、runnerサービスのお守りを省きたいなら、専用マシンを借りる方法があります。運用の手間なしで、同じコストメリットが得られます。コスト計算ツールで、ご自身の数字を試してください。

よくある質問

セルフホストのmacOS runnerとは何ですか?

+

自分で管理するMacで、GitHub Actionsのジョブを実行するものです。GitHubの共有ホスト型マシンの代わりに使います。Actionsのrunnerエージェントをインストールし、リポジトリまたはOrganizationに登録します。あとはワークフローのruns-onラベルで指定します。

セルフホストのmacOS runnerはGitHubホスト型より安いですか?

+

使用量によります。GitHubホスト型のmacOSは1分あたり約$0.062〜$0.102です。月額固定$139の専用runnerは、安いほうの単価で月2,242分前後で元が取れます。それを超えた分は実質無料です。

セルフホストrunnerはパブリックリポジトリでも安全ですか?

+

GitHubは、セルフホストrunnerをプライベートリポジトリ向けに推奨しています。そうしないと、フォークからのプルリクエストが信頼できないコードをマシン上で実行できてしまうからです。パブリックリポジトリでどうしても使う場合は、フォークのワークフローに承認を必須にしてください。runnerは大事なものから切り離しておきます。

runnerサービスを動かし続ける必要がありますか?

+

はい。ジョブを受け取るには、runnerがオンラインである必要があります。MacRunでは監視デーモンがサービスを見守っています。クラッシュしても約30秒以内に再起動するので、自分で監視する必要はありません。

関連ガイド