比較
CRACI 與 Renovate 比較
Renovate 依照您撰寫的規則,讓相依套件保持最新。CRACI 則從另一端著手:它記錄每次建置實際下載的內容並持續監控,讓您知道新的資安公告影響了哪些已出貨的建置。
更新日期
簡短的答案
Renovate 專為相依套件的日常維護而打造:它找出套件檔案、開啟更新 pull request,並讓您以排程、分組與自動合併控制雜訊。CRACI 是一個 GitHub Actions 執行器,記錄每次建置下載的內容,並監控這些 SBOM 是否出現新漏洞。Renovate 問的是「有沒有較新的版本?」CRACI 問的是「我們建置並出貨的內容中,是否有東西存在漏洞?在哪裡?」兩者並非競爭同一項工作,而是可以並行運作:Renovate 開啟更新 pull request,CRACI 告訴您哪些建置需要更新。
| 功能 | CRACI | Renovate |
|---|---|---|
| 回答的問題 | 您已出貨的建置中,哪些包含有漏洞的套件 | 哪些相依套件有較新的版本,或有漏洞警示 |
| 執行您的建置 | 作業在 CRACI 執行器上執行 | 讀取儲存庫,而非建置 |
| 從建置記錄相依套件 | 實際觀察到的下載,包括快取的套件 | 在套件檔案中尋找參照 |
| 開啟更新 pull request | 排程更新,以及來自 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 等 |
| 執行器上的對外連線(egress)政策 | 預設拒絕或允許,失效即封鎖 | 不在其範圍內 |
| SBOM 與來源證明資料 | 每次建置,依作業與快取標示完整性 | 不在其範圍內 |
| 監控已出貨的 SBOM | 持續重新評估受監控的 SBOM | 不在其範圍內 |
| 自架 | 目前為代管;客戶自架執行器已列入產品藍圖,Enterprise 方案 | CLI、Docker 或自架 Community 版 |
| 價格 | 每 vCPU 分鐘 $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.」,而它確實兩者兼顧。它會在您的儲存庫中「尋找對相依套件(公開與私有皆然)的參照」,並在有較新版本時開啟 pull request,更新這些相依套件及其 lock 檔案。
- 涵蓋範圍。超過 90 種套件管理工具,並支援 GitHub、GitLab、Bitbucket、Azure DevOps、Gitea 與 Forgejo 上的儲存庫,AWS CodeCommit、Gerrit 與 SCM-Manager 則列為實驗性支援。
- 可控性。可共用的設定預設集、用於設定個別套件行為的
packageRules、限制 pull request 出現時間的排程,以及針對您信任的更新自動合併。它的文件也指出,大多數團隊會將主要版本更新交由人工處理。 - 可視性。Dependency Dashboard issue 在
config:recommended中預設啟用,並提供協助您決定接受哪些更新的資訊:版本存在時間、採用率、通過率與 merge confidence。 - 延伸能力。自訂管理器可處理專有檔案格式,以及 Renovate 尚未支援的常見格式。
- 部署選擇。採 AGPL-3.0 授權開源,由 Mend 維護。您可以自行執行 CLI 或 Docker 映像檔,在 GitHub.com、Bitbucket Cloud 與 Azure DevOps Cloud 上使用免費的 Mend Renovate Community 雲端應用程式,或執行自架的 Community 版或付費的 Enterprise 版。
Renovate 如何處理漏洞
Renovate 有兩種取得資安修正的途徑。使用 vulnerabilityAlerts 時,它會讀取 GitHub 的漏洞警示,前提是必須啟用相依關係圖與 Dependabot 警示。這類 pull request 會「插隊」,不受排程與每小時上限限制,且預設會升級到最低的已修正版本。使用 osvVulnerabilityAlerts 時,它會將相依套件與 OSV 資料庫比對,該資料庫會下載後離線查詢。文件對其限制說得很明確:「您只會收到直接相依套件的 OSV 漏洞警示」,且僅限於列出的一組資料來源。
CRACI 不會取代上述任何功能,也不會開啟 pull request。如果您的目標是以最少的心力讓數百個儲存庫保持最新,Renovate 正是為此而生。
CRACI 的不同之處
從建置出發,而非從套件檔案出發
Renovate 的依據是您的儲存庫所宣告的內容。但建置做的事往往更多:它在安裝時解析版本、從快取還原套件,並下載任何資訊清單都沒有列出的工具、作業系統套件與映像檔。expressjs/express 5.2.1 最直接地展現了這個落差:它沒有提交 lockfile,因此指向乾淨 checkout 的產生工具沒有任何東西可以解析,無論工具本身多好,都回報不出任何 npm 相依套件。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 就是執行器,它也會執行每個作業的對外連線(egress)政策(預設拒絕或允許,在作業開始前驗證,失效即封鎖),透過 API 回傳 SBOM、網路追蹤與來源證明,並以 CycloneDX 或 SPDX 匯出 SBOM。這些都不是 Renovate 的工作。
哪些內容部署在哪裡的資產清冊
CRACI 的資產清冊檢視會確切顯示,全球範圍內哪些軟體版本部署在哪些產品上。當新漏洞出現時,您可以直接看到哪些產品執行受影響的版本,而不必從版本說明與試算表中拼湊答案。
兩者並用
- Renovate 依排程讓所有平台與套件管理工具中的每個相依套件保持最新,並對低風險更新自動合併。
- CRACI 記錄每次 GitHub Actions 建置、監控已出貨的內容,並告訴您新漏洞影響了哪些建置與團隊,讓您知道應該優先合併哪些更新 pull request。
不需要任何遷移。Renovate 繼續讀取您的儲存庫,您的工作流程也繼續在 GitHub Actions 上執行,只是換了一個執行器。
正在評估兩種以上的工具嗎?Renovate 替代方案比較了從 Dependabot 到 Mend Renovate Enterprise 的七種選擇。
針對 Cyber Resilience Act
Cyber Resilience Act(CRA)要求製造商掌握每個版本中包含的內容,並處理其中的漏洞。Renovate 透過讓相依套件保持修補與最新來提供協助。CRACI 則記錄每次建置的 SBOM、監控新漏洞並保存佐證資料。它將企業在更廣泛的 CRA 法規遵循流程中所需的軟體供應鏈可視性與佐證資料,自動化了相當大的一部分。請參閱 CRA 是什麼與漏洞追蹤。