Bazel Vision

回報問題 查看原始碼

任何軟體開發人員都能透過易於導入和擴充的工具,有效率地建構、測試及封裝任何大小或複雜的專案。

  • 工程師可依據所獲建構的建構基礎來操作。軟體開發人員可專注於編寫程式碼的創意程序,因為能解決建構和測試的機械處理程序。自訂建構系統以支援新的語言或獨特的機構需求時,使用者只需專注於對其用途特有的擴充性,而無需重新進行基本的管線。

  • 工程師可以輕鬆為任何專案做出貢獻。如果開發人員想要開始執行新專案,只需複製專案並執行建構作業即可。進行本機設定則不需要使用。透過跨平台遠端執行功能,玩家可以在任何機器上運作,並對專案指定的所有平台全面測試變更。工程師可以快速為新專案設定版本,或逐步遷移現有的版本。

  • 專案可擴充至任何大小的程式碼集,不限大小團隊。快速增量增量測試,可讓團隊在變更之前,完全確認變更。因此,即使存放區的成長、專案橫跨多個存放區,且引入多種語言,也是如此。基礎架構不會強制開發人員以測試速度來測試建構速度。

我們相信 Bazel 有可能實現這項願景。

Bazel 是從頭打造,建構可重現的建構 (指定輸入的輸入一律都會產生相同的輸出內容) 和可攜式 (可在任何機器上執行,不會影響輸出)。

這些特性支援安全增量 (僅建構已變更的輸入不會造成損毀) 和分散 (建立動作會被隔離且可以卸載)。透過盡量減少在各個核心和遠端系統中執行正確建構和平行處理工作所需的工作,Bazel 可以加快任何建構的速度。

Bazel 的抽象層 (以簡單的擴充語言實作的語言、平台和工具鍊專用的操作說明) 可輕鬆套用到任何結構定義。

Bazel 核心能力

  1. Bazel 支援多語言、多平台版本。無論指定的語言和平台組合為何,您都可以執行單一指令來建構及測試整個來源樹狀結構。
  2. Bazel 建構的快速且正確。對開發人員的機器和持續整合而言,每項建構和測試執行作業都會遞增。
  3. Bazel 提供統一且可擴充的語言,定義任何語言或平台的版本。
  4. Bazel 可讓您連線至遠端執行及快取服務,藉此調度資源
  5. Bazel 適用於所有主要的開發平台 (Linux、MacOS 和 Windows)。
  6. 我們接受採用 Bazel 的需要,但您可以逐步採用。Bazel 會針對特定語言/平台使用獨立處理的工具。

服務語言社群

軟體工程在語言社群的演進中不斷演進,通常是自組使用者使用常用工具和做法的團體。

為提供語言社群成員專用的優質 Bazel 規則,必須整合社群的工作流程與慣例。

Bazel 致力於提供可擴充的開放式環境,並支援任何語言的良好規則組合。

良好規則集的規定

  1. 此規則需支援該語言的高效建構與測試,包括程式碼涵蓋率。
  2. 針對規則 (例如 Java 的 Maven),規則必須與廣為使用的「套件管理員」互動,並且支援其他廣泛使用的建構系統漸進式遷移路徑。
  3. 依據「Bazel 三明治」原則,規則必須可擴充且可互通
  4. 規則必須是 remote-execution ready。從實務上來看,這表示可以使用 toolchains 機制加以設定
  5. 針對該語言,規則 (和 Bazel) 必須和廣泛使用的 IDE 介面連線 (如果有的話)。
  6. 規則需具備充分可用的實用說明文件,並提供有關新手使用者的入門教材,以及適用於專業使用者的完整文件。

這些項目都是基本項目,而必須分別用於 特定生態系統的 Bazel 能力。

執行模型的規模大小也相當龐大,因此只要 執行完成,Bazel 就會將相關值完全提供給該語言社群的成員。