Bazel 簡介

回報問題 查看來源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

優點

Bazel 具有下列優點:

  • 高階建構語言。Bazel 使用抽象且容易理解的語言,在高語意層級描述專案的建構屬性。與其他工具不同,Bazel 是以程式庫、二進位檔、指令碼和資料集的概念運作,可避免您個別呼叫編譯器和連結器等工具,免除複雜的作業。

  • Bazel 快速又可靠。Bazel 會快取先前完成的所有工作,並追蹤檔案內容和建構指令的變更。這樣一來,Bazel 就能知道何時需要重建某些項目,並只重建這些項目。如要進一步加快建構速度,您可以將專案設為以高度平行和漸進式的方式建構。

  • Bazel 支援多個平台。Bazel 可在 Linux、macOS 和 Windows 上執行。Bazel 可從同一個專案,為多個平台 (包括桌機、伺服器和行動裝置) 建構二進位檔和可部署的套件。

  • Bazel 規模。處理超過 10 萬個來源檔案的建構作業時,Bazel 仍能維持靈活度。可處理數以萬計的存放區和使用者群。

  • Bazel 具有擴充性。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 教學課程: