Bazel 簡介

回報問題 查看來源

Bazel 是開放原始碼的建構與測試工具,與 Make、Maven 和 Gradle 類似。使用人類可讀的高階建構語言。Bazel 支援多種語言的專案,並為多個平台建構輸出內容。Bazel 支援多個存放區的大型程式碼集,以及大量使用者。

優點

Bazel 提供以下優點:

  • 高階建構語言。Bazel 會使用易於理解的抽象語言,以高語意等級描述專案的建構屬性。與其他工具不同的是,Bazel 是根據程式庫、二進位檔、指令碼和資料集的概念運作,讓您不必逐一編寫對編譯器和連結器等工具的個別呼叫。

  • Bazel 速度飛快又可靠。Bazel 會快取先前完成的所有工作,並追蹤檔案內容和建構指令的變更。這樣一來,Bazel 才能知道何時需要重建內容,並且僅重新建構該物件。如要進一步加快建構速度,您可以設定專案以高度平行且漸進式的方式進行建構。

  • Bazel 是多平台Bazel 會在 Linux、macOS 和 Windows 上執行。Bazel 可以從同一個專案建構多個平台的二進位檔和可部署套件,包括電腦、伺服器和行動裝置。

  • Bazel 會持續調度資源。Bazel 在處理包含超過 10 萬個來源檔案的建構作業時,可以維持靈活性。可支援數萬個存放區和使用者,

  • Bazel 是可擴充的。支援許多語言,而且您可以擴充 Bazel 來支援任何其他語言或架構。

使用 Bazel

如要使用 Bazel 建構或測試專案,通常需要執行以下作業:

  1. 設定 Bazel。下載並安裝 Bazel

  2. 設定專案工作區,Bazel 會在這裡尋找建構輸入和 BUILD 檔案,並將建構輸出內容儲存在這裡。

  3. 編寫 BUILD 檔案,告知 Bazel 要建構什麼內容以及如何建構該檔案。

    您可以用特定網域語言 (Starlark) 宣告建構目標,來編寫 BUILD 檔案。(請參閱這裡的範例)。

    建構目標會指定 Bazel 將建構的輸入構件加上其依附元件、Bazel 用來建構建構規則的建構規則,以及設定建構規則的選項。

    建構規則指定 Bazel 要使用的建構工具和連結器等建構工具及其設定。Bazel 隨附一些建構規則,涵蓋在支援平台上支援語言的最常見構件類型。

  4. 透過指令列執行 Bazel。Bazel 會將輸出內容放入工作區。

除了建構之外,您也可以使用 Bazel 執行測試查詢建構作業,追蹤程式碼中的依附元件。

Bazel 建構程序

執行建構或測試時,Bazel 會執行以下作業:

  1. 載入與目標相關的 BUILD 檔案。

  2. 分析輸入內容及其依附元件、套用指定的建構規則,並產生「動作」圖表。

  3. 對輸入執行建構動作,直到產生最終建構輸出內容。

由於所有先前的建構工作都會快取,因此 Bazel 可找出並重複使用快取成果,且只會重新建構或重新測試已變更的內容。如要進一步強制執行正確性,您可以設定 Bazel 透過沙箱完全執行建構作業及測試,盡可能減少偏差情形,並最大化可重現性

動作圖表

動作圖代表建構成果、建構成果之間的關係,以及 Bazel 將執行的建構動作。憑此圖,Bazel 可以「追蹤」檔案內容的變更,以及動作的變更 (例如建構或測試指令),並得知之前的建構工作已完成。這個圖表也可讓您輕鬆追蹤程式碼中的依附元件

入門教學課程

如要開始使用 Bazel,請參閱入門指南,或直接前往 Bazel 教學課程: