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 教學課程: