比較
CRACI 執行器與 GitHub 託管執行器比較
繼續使用 GitHub Actions,只更換執行作業的機器。建置完成速度約快一倍,每分鐘成本更低,而且每次建置都會留下其拉進內容的紀錄。
更新日期
相同的工作流程,更快的執行器
如果您使用 GitHub Actions,除非您自行架設執行器,否則作業會在 GitHub 託管執行器上執行。它們很方便: 每個作業都會取得全新的虛擬機器,無須任何維運,而且 Linux、Windows 與 macOS 都有提供。
CRACI 是相容於 GitHub Actions 的執行器。在您的組織上安裝 CRACI GitHub App(套用到所有儲存庫或選定的儲存庫), 然後在工作流程中修改一行:
runs-on: craci
您的工作流程檔案、actions 與 GitHub 介面都維持不變。CRACI 取代的是執行器,而不是 GitHub Actions, 並提供通用執行器所沒有的三項優勢:更快的建置、更低的帳單,以及內建於執行作業之機器中的供應鏈安全。
| 功能 | CRACI | GitHub 託管執行器 |
|---|---|---|
| 建置速度 | 約快 2 倍 | 基準 |
| 10 分鐘建置的成本 | $0.020(以 2 倍速度計) | $0.060 |
| 每分鐘價格,2 vCPU Linux x64 | $0.004 | $0.006 |
| 計費方式 | 按秒計費 | 每個作業無條件進位到整分鐘 |
| 記錄每次建置下載的內容 | 每個作業一份 SBOM,附完整性狀態 | 相依關係圖讀取的是儲存庫中的檔案 |
| 建置網路對外連線政策 | 依作業設定,預設拒絕或允許,失效即封鎖 | 較大型執行器可使用 Azure 私人網路 |
| 經簽章的建置產物來源證明 | 無經簽章的來源證明 | Sigstore 證明,SLSA Build Level 2 或 3 |
| Windows 與 macOS 執行器 | 目前支援 x86-64 與 ARM64 上的 Linux;Windows 與 macOS 已列入產品藍圖 | |
| 內含免費分鐘數 | 從第一分鐘起按分鐘計費,無月費 | 每月 2,000 到 50,000 分鐘;公開儲存庫免費 |
| 設定 | 安裝 CRACI GitHub App,將 runs-on 改為 craci | 內建,例如 ubuntu-latest |
- 支援
- 部分支援
- 不支援
- 已列入產品藍圖
速度
在 CRACI 上的建置,完成時間約為 GitHub 標準託管執行器的一半。這來自三個因素的加總: 更快的硬體、作業開始前更短的排隊時間,以及快取。
您自己的建置能快多少,取決於工作負載。CPU 密集的編譯與測試套件獲益最多;大部分時間在等待網路或外部服務的作業則獲益較少。 有幫助的部分包括:
- 執行器規格從 1 到 32 個運算單位,繁重的作業可以要求更多資源。
- 原生 x86-64 與 ARM64,ARM 建置不需要模擬。
- 支援 GitHub Actions 快取,且每個作業都提供 Docker Engine、Buildx 與 Compose v2。
- x86-64 上支援巢狀虛擬化,適合會自行啟動虛擬機器的作業。
最好的測試就是您自己的管線:移轉一個作業,然後在 GitHub 中並列比較執行時間。
成本
有兩件事會同時降低帳單:每分鐘更便宜,而且更快的建置使用的分鐘數更少。
CRACI 的計費為每 vCPU 分鐘 $0.002,按秒計費,因此標準 2 vCPU Linux 執行器每分鐘為 $0.004。 GitHub 標準 2 核心 Linux x64 執行器的牌價為每分鐘 $0.006,因此 CRACI 每分鐘的成本約低 33%。
一次 10 分鐘的建置
以一次在 GitHub 託管 2 核心執行器上執行 10 分鐘的建置為例:
| 功能 | CRACI | GitHub 託管執行器 |
|---|---|---|
| 建置時間 | 5 分鐘 | 10 分鐘 |
| 每分鐘價格 | $0.004 | $0.006 |
| 每次建置成本 | $0.020 | $0.060 |
| 每月 1,000 次建置 | $20 | $60 |
| 差異 | 約低 67%,也就是便宜 3 倍 |
光是價差就能省下約 33%。更短的建置時間則把節省幅度推高到約 67%。如果您的工作負載建置速度沒有變快, 您仍然享有較低的每分鐘價格。
還有哪些因素會影響帳單
- 進位方式。GitHub 將每個作業無條件進位到整分鐘;CRACI 則按秒計費。一個耗時 10 分 20 秒的作業, 在 GitHub 上會以 11 分鐘計費,而包含許多短作業(lint、測試分片、檢查)的管線,會為大量沒用到的秒數付費。
- 內含分鐘數。GitHub 依您的方案每月內含 2,000 到 50,000 分鐘,且標準執行器在公開儲存庫上免費。 CRACI 沒有免費方案,也沒有內含分鐘數:從第一分鐘起按建置分鐘數付費,無月費。 在 GitHub 的額度內,那邊的邊際成本為零。
- 架構與規格。CRACI 對 ARM64 與 x86-64 收取相同費率。GitHub 的 2 核心 arm64 執行器為每分鐘 $0.005, 因此 CRACI 的 $0.004 在這裡便宜 20%。在 32 vCPU 時,CRACI 每分鐘 $0.064,比 GitHub x64 的 $0.082 約低 22%, 但 GitHub 的 32 核心 arm64 執行器每分鐘 $0.050,比 CRACI 便宜。記憶體也不同:CRACI 的每個運算單位為每 vCPU 3 GB RAM, 而 GitHub 的標準 2 核心私人儲存庫執行器為 8 GB。比較前,請先對齊您的建置所需的規格。
目前的條款請參閱 CRACI 價格方案。
內建於執行器的供應鏈安全
這是 CRACI 執行器能做到、而通用執行器並非為此設計的部分。
建置下載的每個相依套件都有紀錄
在每個作業執行期間,能辨識套件的代理伺服器會記錄通往套件來源的流量:npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk 與 Git 來源, 以及下載預設集。佐證資料會隨 CI 快取一起保存,因此從快取還原的套件仍會被計入。每個作業都會產生 CycloneDX 或 SPDX 格式的 SBOM, 並依作業與依快取標示完整性狀態。
GitHub 的相依關係圖是根據您儲存庫中的資訊清單與 lockfile 建立,可匯出為 SPDX。 它描述的是儲存庫,而不是某一次特定的建置。
控管建置能連線到哪裡
CRACI 的對外連線政策可設為預設拒絕或預設允許,內建 24 個軟體來源預設集,可為 npm、PyPI、apt、apk、Go proxy、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 提供歐盟資料落地,建置在歐洲的裸機基礎架構上執行。
何時應繼續使用 GitHub 託管執行器
- 您需要 Windows 或 macOS 執行器。CRACI 目前僅支援 Linux;Windows 與 macOS 已列入產品藍圖。
- 您的儲存庫是公開的,標準執行器即可免費滿足需求。
- 您的用量在方案內含的分鐘數之內。
許多團隊兩者混用:Linux 建置與測試作業在 CRACI 上,macOS 與 Windows 作業在 GitHub 上。由於切換只是一個
runs-on 標籤,您可以一次移轉一個作業。快取、OIDC 與備援的做法,請參閱
如何切換執行器供應商。
進一步了解 CI/CD 整合與 建置時 SBOM 產生。新創公司可以申請 新創方案,其中包含至少 100,000 分鐘的免費建置分鐘數。