CI/CD
CRACIは、ビルドを実行するランナーです
CRACIは、ソフトウェアサプライチェーンセキュリティの視点から再設計されたCI/CDです。GitHub ActionsのワークフローはCRACI独自のランナー上で実行され、その実行中に、CRACIは取り込まれるすべての外部依存関係を観測します。
更新日
1行でビルドを移行
CRACIが置き換えるのはランナーであり、GitHub Actionsではありません。ワークフローファイル、アクション、シークレットはそのままで、変わるのはジョブの実行場所だけです。
jobs:
build:
runs-on: craci 実行結果は引き続きGitHubに表示されるため、プルリクエスト、チェック、ログは、チームが普段見ている場所に残ります。その設定を担うのがGitHub Appで、すべてのリポジトリまたは選択したリポジトリにインストールします。
ランナーの概要
- サイズは1〜32コンピュートユニットで、各ユニットは1 vCPU・RAM 3 GB、デフォルトは2です。サイズはジョブごとに
cracicorp/setup@v1とそのsize:入力で設定します。 - ネイティブのx86-64とARM64に同料金で対応。
- イメージ:CRACI Slim、CRACI Slim ARM64、そしてGitHub互換のUbuntu 24.04イメージ。Docker Engine、Buildx、Compose v2を搭載しています。
- ジョブごとに分離された仮想マシン。ネストされた仮想化はx86-64で利用でき、ARM64ではプレビュー版です。
- キャッシュ:GitHub Actionsのキャッシュに加え、コンテナレイヤーキャッシュ(ローカル、リモート、バインドマウントのレイヤーキャッシュ)。
- パイプラインの基盤:固定のエグレスIP範囲と組織レベルのランナーテンプレート。
- 現在はLinux。WindowsとmacOSのランナーはロードマップに掲載されています。
ランナーはCRACIが管理し、欧州のベアメタルインフラ上でEUのデータレジデンシーのもと実行されます。顧客ホスト型ランナーはEnterprise向けにロードマップに掲載されています。トレードオフについてはマネージドランナーとセルフホストランナーの比較をご覧ください。
サプライチェーンセキュリティをランナーで行うべき理由
本番ビルドは、ノートPC上のビルドとは別物です。バージョン範囲の解決結果は変わり、タグは移動し、キャッシュは温まっていたり冷えていたりし、環境も同じではありません。出荷したものの信頼できる唯一の記録は、リリースビルドの実行中に取得されたものです。だからこそCRACIは、記録する仕組みをランナーの横ではなくランナーの中に置きました。詳しい論拠はサプライチェーンセキュリティをCIで行うべき理由をご覧ください。
CRACIはランナーそのものを担っているため、スキャナーにはできないことができます。
- スキャンではなく記録。パッケージを認識するプロキシが、推移的依存関係やCIキャッシュから復元されたパッケージを含め、ジョブが実際にダウンロードしたものを観測します。各ジョブのSBOMは完全性の状態を持ちます。
- エグレスポリシーを適用。ポリシーはランナーで適用され、ジョブの開始前に検証され、フェイルクローズで動作します。
- エビデンスを返す。APIは各ジョブのSBOM、ネットワークトレース、来歴を返します。
GitHubホステッドランナーの約2倍の速度
CRACIは、同じワークフローを変更することなく、GitHubの標準のホステッドランナーの約2倍の速度でビルドを実行します。10分かかっていたジョブは約5分になります。
CIの高速化には、節約できる分数以上の価値があります。5分でグリーンになるプルリクエストなら、レビュアーはまだそれを見ています。20分かかれば、作成者はすでに別の作業に移っています。ビルド時間とは、変更を書いてからそれが動くかどうかがわかるまでの間隔であり、チームのすべてのエンジニアがプッシュのたびにそのコストを払っています。
その理由は3つあります。ハードウェア、短い待ち時間、そしてキャッシュです。
高速化にかかるコスト
CRACIは秒単位で計測し、1分あたりの料金も低いため、2倍の速度は相殺されるのではなく、効果が重なります。GitHubホステッドの2コアx64ランナーで10分かかるビルドの場合(GitHubの定価は2026年9月時点、CRACIは2026年10月時点):
| 10分のビルドを月1,000回 | GitHubホステッド | CRACI |
|---|---|---|
| ビルドあたりの実時間 | 10分 | 約5分 |
| ビルドあたりのコスト | $0.060 | $0.020 |
| 月あたりのコスト | 約$60 | 約$20 |
約67%安く、つまり3分の1のコストです。高速化を除いても、2コアx64では定価の差だけで約33%の節約になります。自社のビルドがどれだけ速くなるかはワークロードによるため、1つのワークフローを移行して計測してください。
秒単位の課金
ビルド時間は秒単位で計測され、最も近い秒に丸められます。GitHubは各ジョブを1分単位に切り上げるため、短いジョブのマトリクスでは使っていない時間まで課金されます。30秒のジョブはCRACIで約67%安く、70秒のジョブは約61%安くなります。長いジョブでは、差は定価の差に近づきます。
ビルド時間の料金は1 vCPU分あたり$0.002、サイズ2のランナーで1分あたり$0.004で、ARM64も同料金です。CRACIは市場で最も安いランナーではなく、価格を売りにしているわけでもありません。重要なのは、ランナーが実行中に何を記録するかです。料金をご覧ください。ご自身のGitHubの請求額をCRACIと比べるには、GitHub Actions料金計算ツールをお使いください。
他のGitHub Actionsランナーとの比較
Blacksmith、Depot、Namespace、WarpBuildはいずれもCRACIと同じ方式です。ワークフローはGitHub Actionsのまま、ジョブの実行場所を変えます。速度と料金は互いに近く、いくつかはCRACIより低いARMの料金を掲げています。違いは、ジョブの実行中にランナーが何を記録し、何を制御するかです。
| 機能 | CRACI | GitHubホステッド | Blacksmith | Depot | Namespace | WarpBuild |
|---|---|---|---|---|---|---|
| 2 vCPU Linux x64、1分あたり | $0.004 | $0.006 | $0.004 | プラン付属分を超えると$0.006 | プラン内$0.002、超過分$0.003 | $0.004 |
| 計測単位 | 秒単位 | 分単位に切り上げ | 記載なし | 秒単位 | 分単位、最低1分 | 分単位 |
| コンテナレイヤーキャッシュ | 記載なし | |||||
| ランナーのエグレスポリシー | 型付きソース、フェイルクローズ | Azureプライベートネットワーク | 固定IP | IPとホスト名のルール | ドメインルール、アドバイザリモード | BYOCのセキュリティグループ |
| 各ジョブが取得したもののSBOM | ジョブごとの完全性 | イメージのSyftスキャン | ||||
| 署名付きビルド来歴 | 署名付き来歴なし | アテステーション、SLSA L2またはL3 | BuildKitのイメージアテステーション | |||
| WindowsとmacOS | 現在はLinuxのみ | Windowsはベータ版 |
- 対応
- 一部対応
- 非対応
- ロードマップに掲載
CRACIは最も手頃なランナーの1つです。そのうえで、ジョブが実際に取得したもののSBOMを生成し、フェイルクローズのエグレスポリシーを適用し、API経由で来歴データを返すのがCRACIです。これらはビルドを実行する副産物として得られ、ワークフローに何も追加する必要はありません。項目ごとの詳しい比較はGitHub Actionsランナーの比較をご覧ください。
CRACIで快適に動くもの
GitHub Actionsのジョブが行うことなら何でも動きます。アプリケーションのビルド、コンテナイメージ、テストスイートなどです。特筆すべき2つのケースは、サイズ32までのランナーで動作が文書化されている組み込みLinuxイメージのYoctoおよびBitBakeビルドと、Raspberry Pi OSのpi-genビルドです。
ロードマップ
- WindowsとmacOSのランナー:ロードマップに掲載。
- 顧客ホスト型ランナー:Enterprise向けにロードマップに掲載。
- その他のCIシステム:現在はGitHub Actions、その他は時期未定でロードマップに掲載。