GitHubホスト型macOS runnerと専用Macのコストを正直に比較
1分あたりの単価は、比較の入り口にすぎません。ホスト型のmacOS runnerは、ウォームなマシンなら繰り返さない作業にも料金がかかります。さらに待ち時間で、エンジニアの時間も失われます。このページでは、現実的な3つの利用レベルで両方を比較し、前提をすべて明示します。
前提
- ホスト型のmacOSは、標準runnerの単価である1分$0.062で課金し、ジョブごとに切り上げる。
- コールドなホスト型runnerは、1ジョブあたり約3分を依存関係の復元と、ウォームなキャッシュなら残っていたものの再構築に使う。この時間も課金される。
- 専用のM6 miniは月額固定$139で、キャッシュはウォーム、ジョブごとの復元はない。
- 待ち時間はGitHubには課金されないが、実際に発生する。混雑する時間帯には、macOS runnerを数分待つことがよくある。
3つのチームの1か月
light steady heavy
jobs per month 120 400 900
minutes per job 8 10 12
billed on hosted 1,320 min 5,200 min 13,500 min
incl. cache restore (360) (1,200) (2,700)
hosted cost $82 $322 $837
dedicated M6 $139 $139 $139
monthly difference -$37 +$203 +$718light(少量)のチームはホスト型runnerのままにすべきです。steady(定常)のチームは毎月200ドルほど節約でき、ビルドも速くなります。heavy(大量)のチームは、毎月マシン数台分の料金を払っているうえに、遅いマシンを使っています。
隠れた分数の出どころ
ホスト型のジョブは毎回クリーンなイメージから始まります。SwiftPMのパッケージ、CocoaPods、シミュレータのランタイムの一部を再ダウンロードし、DerivedDataを一から再構築します。実際のプロジェクトでは、コードがコンパイルされる前に、1ジョブあたり数分が課金されます。専用マシンならこれらが残るので、その日2回目のビルドは1回目の続きから始まります。
お金だけでなく速度も
課金される分数を減らすウォームなキャッシュは、実時間も減らします。ホスト型で12分かかるビルドを、ウォームなキャッシュのある専用Mac miniに移すと、4〜6分で終わることがよくあります。前に並ぶキューもありません。プルリクエストのチェックが昼前に終わるか、昼過ぎになるかの違いです。
専用Macでも解決しないこと
- 並列マトリックス。1台のマシンでは、ジョブは一度に1つです。マトリックスを分けるか、台数を増やしてください。
- パブリックリポジトリ。信頼できないプルリクエストのコードを、大事なマシンで実行しないでください。それらはホスト型runnerに残します。
- 誰かが運用する必要があります。更新、runnerサービス、データ消去です。MacRunは固定料金でこれを引き受けます。マシンだけのレンタルなら、お客様の仕事です。
ご自身の数字は計算ツールで試せます。単価の一覧はGitHub Actionsの料金ページにあります。
よくある質問
専用Macは常にGitHubホスト型のmacOS runnerより安いですか?
+
いいえ。macOSの利用が月2,242分前後より少なければ、従量課金のほうが月額固定$139のマシンより安くなります。それを超えると専用Macのほうが安く、使うほど差が広がります。
ホスト型runnerで、ビルド時間より多くの分数が課金されるのはなぜですか?
+
各ジョブがクリーンなイメージから始まるからです。コンパイルの前に、依存関係の復元とキャッシュの再構築に課金対象の時間を使います。ウォームな専用マシンなら、2回目以降のジョブではこの作業を省けます。
専用Mac miniはホスト型runnerよりどのくらい速いですか?
+
ウォームなキャッシュがあり、待ち時間がなければ、ホスト型で12分のビルドが4〜6分で終わることがよくあります。正確な効果は、ビルドのうち依存関係とキャッシュの作業がどれだけを占めるかによります。
両方を同時に使えますか?
+
はい。そうしているチームは多くあります。mainブランチのビルドとほとんどのプルリクエストは専用Macで実行します。広いデバイスマトリックスとパブリックリポジトリのジョブは、GitHubホスト型runnerに残します。