比較
CRACI vs Renovate
Renovateは、お客様が記述したルールに従って依存関係を最新の状態に保ちます。CRACIは反対側から始めます。各ビルドが実際に取得したものを記録して監視し続けるため、新しいアドバイザリがどの出荷済みビルドに影響するかが分かります。
更新日
結論
Renovateは依存関係の衛生管理のためのツールです。パッケージファイルを見つけ、更新プルリクエストを作成し、スケジュール、グループ化、自動マージで通知の量を制御できます。CRACIは、各ビルドが取得したものを記録し、それらのSBOMに新たな脆弱性がないか監視するGitHub Actionsランナーです。Renovateは「新しいバージョンはあるか」を問い、CRACIは「ビルドして出荷したものの中に脆弱なものはあるか、それはどこか」を問います。両者は同じ役割を競うものではなく、並行して動作します。Renovateが更新プルリクエストを作成し、CRACIはどのビルドに更新が必要かを示します。
| 機能 | CRACI | Renovate |
|---|---|---|
| 答える問い | 出荷したビルドのうち、脆弱なパッケージを含むのはどれか | 新しいバージョンや脆弱性アラートがある依存関係はどれか |
| ビルドの実行 | ジョブはCRACIランナー上で実行 | 読み取るのはビルドではなくリポジトリ |
| ビルドから記録した依存関係 | 実際の取得を観測(キャッシュされたパッケージを含む) | パッケージファイル内の参照を検出 |
| 更新プルリクエストの作成 | 定期的な更新に加え、GitHubアラートやOSVに基づく修正 | |
| トリアージと担当チームへの振り分け | ビルドとリポジトリを横断 | リポジトリごとのDependency Dashboard |
| パッケージマネージャー | npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk、Gitを検出 | 90以上のパッケージマネージャー |
| GitHub以外への対応 | 現在はGitHub Actions。GitLab CIとJenkinsはロードマップに掲載 | GitLab、Bitbucket、Azure DevOpsなど |
| ランナーでのエグレスポリシー | デフォルト拒否または許可、フェイルクローズ | 対象範囲外 |
| SBOMと来歴データ | ビルドごと。完全性はジョブごと・キャッシュごと | 対象範囲外 |
| 出荷したSBOMの監視 | 監視対象のSBOMを継続的に再評価 | 対象範囲外 |
| セルフホスト | 現在はマネージド。お客様ホスト型ランナーはロードマップに掲載(Enterprise) | CLI、Docker、またはセルフホスト版Communityエディション |
| 料金 | vCPU 1分あたり$0.002(2 vCPUは$0.004)、秒単位の従量課金。月額料金なし、SBOMごとの課金なし | AGPL-3.0のオープンソース。Mend Renovate Communityは無料、Mend Renovate Enterpriseは有料プラン(2026年9月時点)。 |
- 対応
- 一部対応
- 非対応
- ロードマップに掲載
Renovateの強み
Renovateのドキュメントは「Automated dependency updates. Multi-platform and multi-language.」という一文で始まり、その両方に応えています。リポジトリ内で「依存関係(パブリックとプライベートの両方)への参照を探し」、新しいバージョンがあれば、依存関係とロックファイルを更新するプルリクエストを作成します。
- 幅広さ。90以上のパッケージマネージャーに対応し、GitHub、GitLab、Bitbucket、Azure DevOps、Gitea、Forgejo上のリポジトリを扱えます。AWS CodeCommit、Gerrit、SCM-Managerは実験的サポートとして掲載されています。
- 制御。共有可能な設定プリセット、パッケージごとの動作を指定する
packageRules、プルリクエストが作成されるタイミングを制限するスケジュール、信頼できる更新のための自動マージがあります。ドキュメントでは、ほとんどのチームがメジャーアップデートを人の判断に委ねていると述べています。 - 可視性。
config:recommendedでデフォルトで有効になるDependency Dashboardのissueと、どの更新を受け入れるかを判断するための情報(経過期間、採用状況、成功率、マージの信頼度)があります。 - 対応範囲。カスタムマネージャーで、独自のファイル形式や、Renovateがまだ対応していない一般的な形式も扱えます。
- 導入方法の選択肢。AGPL-3.0のオープンソースで、Mendが保守しています。CLIやDockerイメージを自分で実行することも、GitHub.com、Bitbucket Cloud、Azure DevOps Cloudで無料のMend Renovate Communityクラウドアプリを使うことも、セルフホスト版のCommunityまたは有料のEnterpriseエディションを運用することもできます。
Renovateによる脆弱性への対応
Renovateには、セキュリティ修正への経路が2つあります。vulnerabilityAlertsでは、GitHubの脆弱性アラートを読み取ります。これには依存関係グラフとDependabotアラートを有効にする必要があります。これらのプルリクエストはスケジュールや1時間あたりの上限を無視して「列に割り込み」、デフォルトでは修正済みの最も低いバージョンに更新します。osvVulnerabilityAlertsでは、OSVデータベースをダウンロードしてオフラインで照会し、依存関係を照合します。ドキュメントはその制限を正確に記しています。「OSVに基づく脆弱性アラートが得られるのは直接の依存関係のみです」(対象は掲載されている一連のデータソース)。
CRACIはこれらのいずれも置き換えず、プルリクエストも作成しません。数百のリポジトリを最小限の労力で最新に保つことが目的なら、Renovateはそのために作られています。
CRACIの違い
パッケージファイルではなく、ビルドから始める
Renovateは、リポジトリが宣言している内容をもとに動作します。ビルドはそれ以上のことを行うことがよくあります。インストール時にバージョンを解決し、キャッシュからパッケージを復元し、どのマニフェストにも記載されていないツール、OSパッケージ、イメージをダウンロードします。expressjs/express 5.2.1は、このギャップを最も分かりやすく示しています。ロックファイルがコミットされていないため、クリーンなチェックアウトを対象にした生成ツールには解決すべきものがなく、ツールの性能にかかわらず、npmの依存関係を1つも報告しません。CRACIはディレクトリをスキャンするのではなくビルドを記録するため、この方法では比較できません。リポジトリ内のファイルとビルド内のパッケージは、同じ一覧ではないのです。
CRACIはビルドを実行します。runs-onをcraciに変更すると、パッケージを認識するプロキシが、各ジョブがnpm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk、Gitの各ソースとダウンロードプリセットから取り込むものを記録します。すべてのジョブとキャッシュに完全性の状態が付与されます。状態はComplete、Complete with connections、Incomplete、Unavailable、Not recordedのいずれかです。
出荷したものの監視
CRACIはビルドとリポジトリをまたいで脆弱性を集約し、新しいアドバイザリが公開されるたびに監視対象のSBOMを再評価し続けます。アドバイザリが公開されると、どのマニフェストにも記載されていないパッケージを含め、影響を受けるパッケージを実際に使用したビルドとリポジトリが分かります。セキュリティチームは検出結果をトリアージし、修正を担当するチームに振り分けられます。きっかけは新しいバージョンの登場ではなく、ビルドが実際に使用したものの脆弱性です。
監視にとどまらない機能
CRACIはランナーそのものであるため、ジョブごとのエグレスポリシー(デフォルト拒否または許可、ジョブの開始前に検証、フェイルクローズ)も適用し、APIを通じてSBOM、ネットワークトレース、来歴を返し、SBOMをCycloneDXまたはSPDXでエクスポートします。これらはいずれもRenovateの役割ではありません。
どこに何がデプロイされているかのインベントリ
CRACIのインベントリビューでは、どのソフトウェアバージョンがどの製品にデプロイされているかを、グローバルに正確に把握できます。新たな脆弱性が見つかったとき、リリースノートやスプレッドシートからつなぎ合わせることなく、影響を受けるバージョンを使用している製品を確認できます。
両方を使う
- Renovateは、すべてのプラットフォームとパッケージマネージャーにわたって、スケジュールに沿ってすべての依存関係を最新に保ち、リスクの低い更新は自動マージします。
- CRACIは、GitHub Actionsの各ビルドを記録し、出荷したものを監視し、新たな脆弱性がどのビルドとチームに影響するかを示します。そのため、どの更新プルリクエストを優先してマージすべきかが分かります。
移行作業は必要ありません。Renovateは引き続きリポジトリを読み取り、ワークフローもランナーが変わるだけで、引き続きGitHub Actions上で動作します。
3つ以上のツールを比較検討していますか?Renovateの代替ツールでは、DependabotからMend Renovate Enterpriseまで7つの選択肢を比較しています。
Cyber Resilience Actへの対応
CRAは、製造者が各リリースの中身を把握し、その脆弱性に対処することを求めています。Renovateは依存関係にパッチを適用し最新に保つことで貢献します。CRACIは各ビルドのSBOMを記録し、新たな脆弱性がないか監視し、エビデンスを保持します。企業がより広範なCRAコンプライアンスのプロセスで必要とするソフトウェアサプライチェーンの可視性とエビデンスのかなりの部分を自動化します。CRAとはと脆弱性トラッキングをご覧ください。