GitHub Actionsのサードパーティーマネージドランナーの紹介
この記事は はてなエンジニア Advent Calendar 2023 の 2024年1月4日 の記事です。
GitHub Actionsの実行環境であるランナーには、GitHubが提供するGitHub ホステッド ランナーと、自分でランナーを用意・管理するセルフホステッド ランナーの大きく二種類があります。
最近はGitHub ホステッド ランナーにもラージランナーが用意されるようになり、ある程度ランナーのスペックを選べるようにもなりましたが、他のCIサービスと比べてもスペックの割にコストが高めである感じは否めません。一方でセルフホステッド ランナーにはスペックを自分で調整できる自由度がありつつも、管理する手間とコストが掛かってきます。
こうした隙間を突くように、サードパーティーによるマネージドなセルフホステッド ランナーを提供するサービスが増えつつあります。基本的には runs-on:
に各サービスが提供するランナーの名前を指定するだけで、その名前に応じた環境(CPUアーキテクチャーやスペック、OS)を選べる、という形になっています。
自分が見かけたり調べたり実際に使ってみたものをいくつか紹介してみようと思います。
BuildJet
- コストがGitHub ホステッド ランナーの半額
- 同じvCPU数なら半額、同じコストならvCPU数が倍、というモデル
- ただしvCPU数に上限があり、並列で起動できるジョブ数に制限がある
- そのvCPU数上限を上げるのに別途課金が必要
- シングルコアパフォーマンスがGitHub ホステッド ランナーよりも高い
- x86_64だけでなくARMランナーも提供している
- GitHub ホステッド ランナーでもARMが提供され始めているので、差別化ポイントとしては弱くなりそう
- Accelerate your CI/CD with Arm-based hosted runners in GitHub Actions - The GitHub Blog
- 以前はAppleシリコンのMacランナーも提供する意思を見せていたが、GitHub ホステッド ランナーもAppleシリコンに対応したので、やらないことにしたようである
- GitHub Actions: Apple silicon (M1) macOS runners are now available in public beta! - The GitHub Blog
- https://buildjet.com/for-github-actions/docs/runners/hardware#mac-os-support
Given the recent runner additions of Apple M1 runners we won't be providing BuildJet runners for macOS.
actions/cache
の代替としてbuildjet/cache
を用意している- Launching BuildJet Cache for GitHub Actions | BuildJet for GitHub Actions
- リポジトリあたりの容量が標準よりも大きかったり、速度が速い
- Cloudflare R2で開発されているというのも面白い
はてなでも昨年から一部のチームで使用していて、CI/CDの速度向上の恩恵を受けています。管理画面はあまりいけていなくて、vCPU数上限がある割にはどれだけ消費されているかのリアルタイムの数値やグラフでの確認ができなかったりするので、キャパシティプランニングが難しいですね(上限に引っ掛かるとジョブの起動待ち状態になるので、悲鳴ベースで対処していくしかない)。
Namespace
- 単なるGitHub Actionsのマネージドランナーというだけではなくて、Dockerイメージのリモートビルダーや、開発環境としてのKubernetesクラスターの作成もできたりする
- Webアプリケーションのプレビュー環境機能なども
- キャッシュのアップロード・ダウンロードではなく、キャッシュ用のボリュームをアタッチすることでの高速化が最近サポートされたようでとても良さそう
- Pricingはプラン毎にシート数やコミコミのリソースが決まっている(超過分は別途)、という形なので若干複雑
GitRunners
- 雰囲気としてはBuildJetに近そう
- コスト的にはGitHub ホステッド ランナーとBuildJetの中間
- 並列数の制限はなさそうなので、BuildJetのvCPU上限の拡張に課金するよりもいいケースもありそう
- 1vCPUを選べるのが特徴的(GitHub ホステッド ランナーやBuildJetは最低2vCPU)
- 個人で少し触ってみた程度だが、管理画面はBuildJetよりもいけていそう
- Upcoming featuresのアピールが気になる
-
Persistent storage for all ephemeral runners and flamegraph visualizations to analize workflows runtimes.
- 前者はNamespaceのCache Volumesに相当するものっぽい
- 後者はボトルネックを見つけるのに便利そうで、やはり管理系の機能には力を入れていそう
-
WarpBuild
- Argonautというクラウドサービスのデプロイツールからピボットしたサービスらしい
✨ Today, we are launching our new product - WarpBuild. ✨
— surya ☀️ (@suryaoruganti) 2023年9月18日
WarpBuild offers super fast, secure Github action runners and is up to 30% faster and 50% cheaper than Github actions. The best part is that it is a drop-in replacement that takes just 30 seconds to get started.
- こちらもBuildJetと近しい雰囲気
- CPUパフォーマンスがいい
- x86_64もARMもサポート
- 並列数の制限もなし!
- SSHでデバッグ可能というのは面白そう・便利そう
- この時の課金がどうなるのかは気になる
- PricingもGitHub ホステッド ランナーの半額なので、BuildJetと同様
- vCPUの選択肢が2X、4X、16Xとなっていて、8Xがないのが悩ましいかもしれない
- Coming soonにも期待したい
Cirrus Runners
- Cirrus CIというCIサービスの提供元のCirrus Labsが出している、AppleシリコンのMacランナー
- AppleシリコンはM1ではなくM2
- 1ランナーあたり$150/月という固定費で使い放題なのが特徴
- MacランナーはどのCIサービスでも高い(時間単価がLinuxの10倍くらいする)ので、用途によってはめちゃくちゃ安く使える
- タイムゾーンをまたがって使うことで稼働率を高められるとコスト効率がいいということ
- New dashboard with insights into performance of Cirrus Runners - Tart
- TartとOrchardという仮想化基盤を自社で開発・公開していて、それを使って運用されているのも興味深い
まとめ
ということで、自分の知る範囲でざっくりとGitHub Actionsのマネージドランナーについて紹介してみました。改めて調べてみると、新サービスが増えたり、各サービスで機能追加の予定も出ていたりして楽しみが増えました。逆にBuildJetは最近あまりアナウンスやブログの投稿がなかったりするのは気がかりですね。他にも同種のサービスをご存知の方がいたらぜひ教えてください!