版本模型

回報問題 查看來源

原始網誌文章所述,Bazel 4.0 和以上版本支援兩種測試群組:滾動式版本和長期支援 (LTS) 版本。本頁面說明 Bazel 發布模型的最新資訊。

發布版本管理

Bazel 會使用 major.minor.patch 語意版本管理配置。

  • 「主要版本」包含與先前版本不相容的功能。每個主要 Bazel 版本都是 LTS 版本。
  • 「次要版本」包含回溯相容的錯誤修正程式,以及從主要分支版本向後移植的功能。
  • 修補程式版本包含重大錯誤修正。

此外,預先發布版本會在下一個主要版本號碼後方加上連字號和日期後置字串。

例如,每種類型的新版本都會產生下列版本號碼:

  • 主要版本:6.0.0
  • 未成年人:6.1.0
  • 修補程式:6.1.2
  • 預先發布版:7.0.0-pre.20230502.1

支援階段

每個主要的 Bazel 版本都有以下四個支援階段:

  • 滾動式:這個主要版本仍處於預先發布版階段,Bazel 團隊會從 HEAD 發布滾動版本。
  • 使用中:這個主要版本是目前有效的 LTS 版本。Bazel 團隊會將重要功能和錯誤修正檔案向後移植到次要版本中。
  • 維護:這個主要版本是維護模式的舊版 LTS 版本。Bazel 團隊承諾將針對安全性問題和 OS 相容性問題的重大錯誤,向後移植到這個 LTS 版本。
  • 已淘汰:Bazel 團隊不再支援這個主要版本,且所有使用者都應遷移至較新的 Bazel LTS 版本。

發布頻率

Bazel 會定期發布兩個測試群組的版本。

推出版本

  • 滾動版與 Google Blaze 版本協調,且每兩週就會從 HEAD 發布。此為下一個 Bazel LTS 版本的預先發布版。
  • 推出作業可能會含有不相容的變更。建議您針對重大破壞性變更使用不相容的標記,發布不相容的變更應遵循回溯相容性政策

LTS 版本

  • 主要版本:新的 LTS 版本預計大約每 12 個月從 HEAD 中移除。新的 LTS 版本發布後,就會立即進入有效階段,而前一個 LTS 版本也會進入維護階段。
  • 子版本:Active LTS 測試群組新增的次要版本預計每 2 個月發布一次。
  • 修補程式版本:在執行中和維護階段中,LTS 版本適用的新修補程式版本預計會隨需發布,以便修正重大錯誤。
  • Bazel LTS 版本進入已淘汰階段,該版本進入維護階段 2 年後。

如要瞭解預定推出的版本,請查看 GitHub 上的版本問題

支援矩陣

LTS 版本 支援階段 最新版本 停止支援
Bazel 7 累計 查看 GitHub 版本頁面 不適用
Bazel 6 運作中 6.4.0 2025 年 12 月
Bazel 5 維護 5.4.1 2025 年 1 月
Bazel 4 維護 4.2.4 2024 年 1 月

您可以在 GitHub 的版本頁面找到所有 Bazel 版本。

發布程序與政策

滾動式更新程序十分簡單:大約每兩週就會建立新版本,此版本會與 Google 內部 Blaze 版本的基準一致。由於發布時程的快速,我們不會將任何變更向後移植,直到發布版本為止。

在 LTS 版本中,須遵守以下程序和政策:

  1. 決定版本的基準修訂版本。
    • 對於新的主要 LTS 版本,基準修訂版本是主要分支版本的 HEAD。
    • 對於次要或修補程式版本,基準修訂版本是相同 LTS 最新版本中最新版 的 HEAD。
  2. 使用基準修訂版本在 release-<version> 的名稱建立發布分支版本。
  3. 透過 PR 將變更向後移植到發布分支版本。
    • 社群可以建議將特定修訂版本建議向後移植,方法是在相關的 GitHub 問題或 PR 上回覆「@bazel-io flag」,並將其標示為潛在的發布攔截器;Bazel 團隊會將這些修訂版本標示為可能的發布攔截器,並決定是否向後移植修訂版本。
    • 只有主要分支版本上的可回溯相容的修訂版本可以向後移植,但可接受其他可解決合併衝突的其他小變更。
  4. 找出發布阻斷器並修正發布分支版本中的問題。
    • 在 Bazel CI 的 postsubmit下游測試管道中使用相同的測試套件測試版本分支版本。Bazel 團隊會監控發布分支版本的測試結果,並修正任何發現的迴歸問題。
  5. 解決所有已知的發布攔截器後,從發布分支版本建立新的候選版本。
    • 候選版會在 bazel-discuss 上公告,Bazel 團隊會監控候選的社群錯誤報告。
    • 如果發現新的發布攔截器,請返回最後一個步驟,並在解決所有問題後建立新的候選版。
    • 建立第一個候選版本後,不允許將新功能新增至發布分支版本。
  6. 如果找不到其他發布攔截器,請將候選版本推送為官方版本
    • 如果是修補程式版本,請至少在最後一個候選版推出後的兩個工作天內推送版本。
    • 如果是主要版本和次要版本,請在最後一個候選版發布後的兩個工作天內推送版本,但不得在第一個候選版推出後的一個工作天內推送版本。
    • 該版本只會在次日為工作天的當天推送。
    • 這個版本會在 bazel-discuss 上公告,Bazel 團隊會監控並處理新發布的社群錯誤報告。

回報迴歸問題

如果使用者在新的 Bazel 版本中發現迴歸、候選版本,甚至在 HEAD 中發現 Bazel,請前往 GitHub 回報錯誤。您可以利用 Bazelisk 包裝錯誤修訂項目,並在錯誤報告中加入這項資訊。

舉例來說,如果您的建構成功透過 Bazel 6.1.0 執行,但第二個版本 6.2.0 候選版本失敗,您可以透過

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

您可以設定 BAZELISK_SHUTDOWNBAZELISK_CLEAN 環境變數來執行對應的 Bazel 指令,以便在需要重現問題時重設建構狀態。詳情請參閱 Bazelisk Bisect 功能的相關說明文件。

請記得將 Bazelisk 升級至最新版本,以便使用 bisect 功能。

規則相容性

如果您是規則作者,並想維持與不同 Bazel 版本的相容性,請參閱規則相容性頁面。