為什麼 Bazel?

回報問題 查看來源 夜間 7.2 7.1 7.0 6.5 6.4

Bazel 是一種快速正確可擴充的功能 建構工具,提供支援多種應用程式的整合式測試 語言存放區平台,位於領先業界的生態系統中。

Bazel 速度飛快

Bazel 確實知道每個建構指令需要的輸入檔案, 只需在一組輸入檔案包含 每次建構之間的變化 而是盡可能以平行處理原則執行建構指令, 在相同電腦上或在遠端建構節點上執行。如果建構的結構 因此可以同時執行數千個建構或測試指令。

無論是在記憶體、磁碟或磁碟上,多個快取層都支援此功能 遠端建構設備 (如有)在 Google,我們通常 達到快取命中率的目標 位於北方為 99%

Bazel 正確無誤

Bazel 可確保「只會」從您自己的二進位檔建構二進位檔 Cloud Build 觸發條件 會在您變更原始碼時自動啟動建構作業Bazel 動作會在個別沙箱和 Bazel 追蹤中執行 每個建構作業的輸入檔案,且只會重新執行建構作業 並在需要時執行指令這樣做可確保您的二進位檔處於最新狀態, 相同的原始碼一律會產生相同的二進位位元 大約有 50% 的時間

暢享無止盡的 make clean 叫用功能,以及追尋畫面上的小錯誤 其實是在從未建構的原始碼中解析

Bazel 是可擴充的

透過編寫自己的規則和巨集來充分運用 Bazel 的全部功能, 針對各種專案中的特定需求自訂 Bazel。

Bazel 規則是以 Starlark 編寫, 內部程式設計語言則屬於 Python 的子集Starlark 廠牌 大部分開發人員都能存取規則寫入,同時建立規則 在整個生態系統中使用

整合式測試

Bazel 的整合測試執行器 知道並僅執行需要重新執行這些測試的 (如有) 平行執行這些指令碼。使用遙控器提前偵測火災 快速執行測試數十次

Bazel 提供將測試結果上傳至中央的機制 方便使用者有效溝通測試結果 像是持續整合或個別開發人員

支援多個語言

Bazel 支援許多常見的程式設計語言,包括 C++、Java Kotlin、Python、Go 和 Rust。您可以建立多個二進位檔 (例如 並在同一 Bazel 叫用中) 執行多個動作 受限於單一語言的慣用建構工具。

支援多個存放區

Bazel 可以從多個位置收集原始碼:您 不需要廠商依附元件 但您也可以 Bazel 到原始碼或預先建構成果的位置 (例如 Git) 其餘部分都為您負責

多平台支援

Bazel 可以同時為多種平台建構專案,包括 Linux、 macOS、Windows 和 Android這個平台也能提供 跨平台程式碼編譯功能 同時在另一個平台執行建構作業

廣泛的生態系統

產業領袖喜歡 Bazel,用來建構 開發人員社群。尋找工具、服務 和說明文件,包括諮詢服務和軟體式服務 (SaaS) 產品 Bazel 可以使用。探索各種擴充功能,例如支援 我們的開放原始碼軟體存放區