比較
CRACIランナーとGitHubホステッドランナーの比較
GitHub Actionsはそのままに、ジョブを実行するマシンだけを変えます。ビルドは約2倍の速さで終わり、1分あたりのコストは下がり、すべてのビルドが取り込んだものの記録を残します。
更新日
同じワークフロー、より速いランナー
GitHub Actionsを使っている場合、自前のランナーを用意していない限り、ジョブはGitHubホステッドランナー上で実行されます。これは便利です。各ジョブに新しい仮想マシンが割り当てられ、運用の手間はなく、Linux、Windows、macOSのすべてが利用できます。
CRACIはGitHub Actions互換のランナーです。組織にCRACI GitHub Appをインストールし、すべてのリポジトリまたは選択したリポジトリを対象に、ワークフローの1行を変更します。
runs-on: craci
ワークフローファイル、アクション、GitHubのインターフェースはそのままです。CRACIが置き換えるのはランナーであり、GitHub Actionsではありません。そして汎用ランナーにはない3つのものを提供します。より速いビルド、より低い請求額、そしてジョブを実行するマシンに組み込まれたサプライチェーンセキュリティです。
| 機能 | CRACI | GitHubホステッドランナー |
|---|---|---|
| ビルド速度 | 約2倍高速 | 基準 |
| 10分のビルドのコスト | 2倍速で$0.020 | $0.060 |
| 1分あたりの料金(2vCPU Linux x64) | $0.004 | $0.006 |
| 課金 | 秒単位 | 各ジョブを1分単位に切り上げ |
| 各ビルドが取得したものの記録 | ジョブごとのSBOM、完全性の状態付き | 依存関係グラフはリポジトリのファイルを読み取る |
| ビルドネットワークのエグレスポリシー | ジョブごと、デフォルト拒否または許可、フェイルクローズ | 大型ランナーでのAzureプライベートネットワーク |
| 署名付き成果物の来歴 | 署名付き来歴なし | Sigstoreアテステーション、SLSA Build Level 2または3 |
| WindowsとmacOSのランナー | 現在はx86-64とARM64のLinux、WindowsとmacOSはロードマップに掲載 | |
| 無料利用枠 | 最初の1分から分単位で課金、月額料金なし | 月2,000〜50,000分、パブリックリポジトリは無料 |
| セットアップ | CRACI GitHub Appをインストールし、runs-onをcraciに変更 | 組み込み済み(例:ubuntu-latest) |
- 対応
- 一部対応
- 非対応
- ロードマップに掲載
速度
CRACIでのビルドは、GitHubの標準ホステッドランナーの約半分の時間で終わります。その理由は3つあります。より高速なハードウェア、ジョブ開始までの短い待ち時間、そしてキャッシュです。
自社のビルドがどれだけ速くなるかはワークロードによります。CPUバウンドのコンパイルやテストスイートは最も効果が大きく、大半の時間をネットワークや外部サービスの待ちに費やすジョブは効果が小さくなります。速度向上に寄与する要素は次のとおりです。
- 1〜32コンピュートユニットのランナーサイズ。重いジョブにはより多くのリソースを割り当てられます。
- ネイティブのx86-64とARM64。ARMのビルドにエミュレーションは不要です。
- GitHub Actionsのキャッシュに対応し、すべてのジョブでDocker Engine、Buildx、Compose v2を利用可能。
- x86-64でのネストされた仮想化。独自の仮想マシンを起動するジョブ向けです。
いちばん確実なのは、自社のパイプラインで試すことです。ジョブを1つ移行し、GitHub上で実行時間を並べて比較してください。
コスト
2つの要因が同時に請求額を下げます。1分あたりの料金が安く、さらに速いビルドは使う分数が少なくなります。
CRACIは1vCPU分あたり$0.002を秒単位で計測して請求するため、標準の2vCPU Linuxランナーは1分あたり$0.004です。GitHubは標準の2コアLinux x64ランナーを1分あたり$0.006としているため、CRACIの1分は約33%安くなります。
10分のビルドの場合
GitHubホステッドの2コアランナーで10分かかるビルドを例にとります。
| 機能 | CRACI | GitHubホステッドランナー |
|---|---|---|
| ビルド時間 | 5分 | 10分 |
| 1分あたりの料金 | $0.004 | $0.006 |
| ビルドあたりのコスト | $0.020 | $0.060 |
| 月1,000ビルド | $20 | $60 |
| 差 | 約67%安く、3分の1のコスト |
料金の差だけで約33%節約できます。ビルド時間の短縮によって、それが約67%になります。ワークロードによってビルドが速くならない場合でも、1分あたりの低い料金は適用されます。
請求額に影響するその他の要素
- 端数処理。GitHubは各ジョブを1分単位に切り上げますが、CRACIは秒単位で計測します。10分20秒かかるジョブは、GitHubでは11分として請求されます。短いジョブ(lint、テストシャード、チェック)が多いパイプラインでは、使っていない秒数に対して多くの料金を払うことになります。
- 無料利用枠。GitHubはプランに応じて月2,000〜50,000分を含み、標準ランナーはパブリックリポジトリでは無料です。CRACIには無料枠も付属の利用時間もなく、最初の1分から利用した分だけ支払い、月額料金はありません。GitHubの付属分の範囲内であれば、GitHub側の限界費用はゼロです。
- アーキテクチャとサイズ。CRACIはARM64とx86-64に同じ料金を適用します。GitHubの2コアarm64ランナーは1分あたり$0.005なので、そこではCRACIの$0.004が20%安くなります。32vCPUではCRACIは1分あたり$0.064で、GitHubのx64の$0.082より約22%安くなりますが、GitHubの32コアarm64ランナーは$0.050で、1分あたりではCRACIより安くなります。メモリも異なります。CRACIのコンピュートユニットは1vCPUあたりRAM 3GBで、GitHubの標準2コアのプライベートランナーは8GBです。比較する前に、ビルドに必要な構成をそろえてください。
最新の条件はCRACIの料金をご覧ください。
ランナーに組み込まれたサプライチェーンセキュリティ
これは、汎用ランナーが想定していない、CRACIランナーならではの機能です。
ビルドが取得したすべての依存関係の記録
各ジョブの実行中、パッケージを認識するプロキシがパッケージソースへの通信を記録します。対象はnpm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk、Gitの各ソースに加え、ダウンロードプリセットです。エビデンスはCIキャッシュとともに引き継がれるため、キャッシュから復元されたパッケージも記録に含まれます。すべてのジョブがCycloneDXまたはSPDXのSBOMを生成し、ジョブごと・キャッシュごとの完全性の状態を持ちます。
GitHubの依存関係グラフは、リポジトリ内のマニフェストとロックファイルから構築され、SPDXとしてエクスポートできます。これが表すのはリポジトリであり、特定のビルドではありません。
ビルドがアクセスできる範囲の制御
CRACIのエグレスポリシーはデフォルト拒否またはデフォルト許可で、24の組み込みソフトウェアソースプリセット、npm、PyPI、apt、apk、Goプロキシ、Nix、Cargo、OCIレジストリ、Git向けの型付きカスタムソース、そして明示的なTLS、TCP、UDP、ICMPルールを備えています。ポリシーはジョブの開始前に検証され、フェイルクローズで動作し、違反時にはアラートを送信します。デフォルト拒否のポリシーでは、侵害された依存関係が想定外のホストにアクセスしようとしても、ランナーで阻止されます。
GitHubの大型ランナーは固定IPアドレスとAzureプライベートネットワークを提供しており、自社のAzureネットワークを通じて外向きのアクセスを管理できます。これは有用ですが、アプローチが異なります。ジョブに付随するポリシーではなく、Azureで設定するネットワークの仕組みです。
来歴
APIはSBOM、ネットワークトレース、来歴を返します。CRACIは来歴に署名せず、SLSAレベルも主張していません。
GitHubはSigstoreを基盤とする成果物のアテステーションを提供しており、GitHubによれば単体でSLSA v1.0 Build Level 2を、再利用可能なワークフローと組み合わせるとLevel 3を満たします。署名付きの来歴や正式なSLSAレベルが要件である場合は、GitHubに分があります。
分離とデータの所在
CRACIのジョブは分離された仮想マシンで実行されます。Enterpriseプランでは、CRACIはEUのデータレジデンシーを提供し、ビルドは欧州のベアメタルインフラ上で実行されます。
GitHubホステッドランナーを使い続けるべきケース
- WindowsやmacOSのランナーが必要。CRACIは現在Linuxのみで、WindowsとmacOSはロードマップに掲載されています。
- リポジトリがパブリックで、標準ランナーを無料で使える。
- 使用量がプランの無料利用枠に収まっている。
多くのチームは両方を併用しています。LinuxのビルドとテストのジョブはCRACIで、macOSとWindowsのジョブはGitHubで実行します。切り替えはruns-onラベルの変更だけなので、ジョブを1つずつ移行できます。キャッシュ、OIDC、フォールバックについては、ランナープロバイダーの切り替え方をご覧ください。
CI/CD連携とビルド時のSBOM生成についてもご覧ください。スタートアップは、少なくとも100,000分の無料ビルド時間が含まれるスタートアッププログラムに応募できます。