Bazel 簡介

回報問題 查看原始碼 Nightly 8.1 · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

Bazel 是開放原始碼的建構和測試工具,類似 Make、Maven 和 Gradle。它使用人類可讀的高階建構語言。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 教學課程: