為什麼 Bazel?

回報問題 查看原始碼

Bazel 是快速正確可擴充的建構工具,其具備整合式測試,且在領先業界的生態系統中支援多種語言存放區平台

Bazel 速度飛快

Bazel 能確切掌握每個建構指令所需的輸入檔案,因此只在每次建構作業之間變更輸入檔案集時重新執行,才能避免不必要的工作。它會在相同電腦或遠端建構節點上執行建構指令,盡可能多執行平行處理。如果建構的結構允許,即可同時執行數千個建構或測試指令。

由多個快取層 (記憶體、磁碟和遠端建構設備) 支援此功能。Google 會定期達到 99% 北方的快取命中率。

Bazel 是正確的

Bazel 可確保二進位檔「僅」透過您自己的原始碼建構。Bazel 動作會在個別沙箱中執行,而 Bazel 會追蹤建構作業中的每個輸入檔案,並只在必要時重新執行建構指令。這樣可即時更新二進位檔,使相同的原始碼總是成為同一個二進位檔 (位元)。

享有無限 make clean 叫用,並追查過去從未建構的原始碼中解決的重大錯誤。

Bazel 是可擴充的

自行編寫規則和巨集,以針對多種專案自訂 Bazel,充分發揮 Bazel 的功用。

Bazel 規則以 Starlark 編寫,這是我們的內部程式設計語言,也是 Python 的子集。Starlark 讓大多數開發人員都能存取規則編寫,並建立可用於整個生態系統的規則。

整合式測試

Bazel 的整合式測試執行器知道並且僅執行需要重新執行的測試,並使用遠端執行 (如果可用) 平行執行這些測試。使用遠端執行快速執行數千次測試,及早偵測出問題。

Bazel 提供設施可將測試結果上傳至中央位置,有助於有效率地通訊測試結果,無論是使用持續整合還是個別開發人員皆是如此。

支援多種語言

Bazel 支援許多常見的程式設計語言,包括 C++、Java、Kotlin、Python、Go 和 Rust。您可以在相同的 Bazel 叫用中建構多個二進位檔 (例如後端、網路 UI 和行動應用程式),而不受單一語言的慣用建構工具限制。

支援多存放區

Bazel 可以從多個位置收集原始碼:您不需要廠商您的依附元件 (可以!),您可以改為將 Bazel 指向原始碼或預先建構的構件 (例如 Git 存放區或 Maven Central),由此負責處理其餘工作。

多平台支援

Bazel 可同時為 Linux、macOS、Windows 和 Android 等多個平台建構專案。此外,還提供強大的跨程式碼編譯功能,以便為某個平台建構程式碼,同時在另一個平台上執行建構作業。

生態系統廣泛

產業領導者熱愛 Bazel,建構使用 Bazel 並貢獻心力的大型開發人員社群。尋找 Bazel 可使用的工具、服務和說明文件,包括諮詢和軟體式服務 (SaaS) 產品。瀏覽我們的開放原始碼軟體存放區中的擴充功能,例如對程式設計語言的支援。