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 知道要建構的內容和建構方式。

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

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

    建構規則會指定 Bazel 要使用的建構工具,例如編譯器和連結器,以及其設定。Bazel 隨附多項建構規則,涵蓋支援平台支援的語言中最常見的構件類型。

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

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

Bazel 建構程序

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

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

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

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

由於系統會快取先前的所有建構工作,因此 Bazel 可以識別並重複使用快取的構件,並且只重新建構或重新測試變更的內容。為了進一步強制執行正確性,您可以將 Bazel 設定為透過沙箱強制執行建構作業和測試,將偏差降到最低,盡可能提高可重現性

動作圖表

該動作圖表代表了建構構件、它們之間的關係,以及 Bazel 將執行的建構動作。透過這個圖表,Bazel 可以追蹤檔案內容的變更,以及對建構或測試指令等動作的變更,以及瞭解之前的建構工作。這個圖表也可讓您輕鬆在程式碼中追蹤依附元件

入門教學課程

如要開始使用 Bazel,請參閱開始使用或直接跳至 Bazel 教學課程: