版本模型

回報問題 查看原始碼 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

原始部落格文章所宣布,Bazel 4.0 以上版本支援兩種版本:滾動式版本和長期支援 (LTS) 版本。本頁面提供 Bazel 版本模式的最新資訊。

支援矩陣

LTS 版本 支援階段 最新版本 停止支援
Bazel 8 滾動 查看滾動式發布頁面 不適用
Bazel 7 有效 7.4.1 2026 年 12 月
Bazel 6 維護 6.5.0 2025 年 12 月
Bazel 5 維護 5.4.1 2025 年 1 月
Bazel 4 已淘汰 4.2.4 2024 年 1 月

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

版本管理

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 團隊只會將安全性問題和作業系統相容性問題的重大錯誤修正項目回移至這個 LTS 版本。
  • 已淘汰:Bazel 團隊不再為這個主要版本提供支援,所有使用者都應遷移至較新的 Bazel LTS 版本。

發布頻率

Bazel 會定期發布兩個發布途徑的版本。

滾動式版本

  • 滾動式發布作業會與 Google Blaze 發布作業保持一致,並大約每兩週從 HEAD 發布。這是下一個 Bazel LTS 版本的預先發布版。
  • 滾動式發布版本可以提供不相容的變更。建議在重大破壞性變更中使用不相容的旗標,推出不相容的變更時,應遵循我們的回溯相容性政策

LTS 版本

  • 主要版本:大約每 12 個月就會從 HEAD 推出新的長期支援版本。新的 LTS 版本推出後,會立即進入「Active」階段,而先前的 LTS 版本則會進入「Maintenance」階段。
  • 子版本:預計每 2 個月會發布一次有效的 LTS 群組新子版本。
  • 修補程式版本:在「Active」和「Maintenance」階段,LTS 版本的新修補程式版本預計會視需要發布,以修正重大錯誤。
  • Bazel LTS 版本在維護階段停留 2 年後,就會進入已淘汰階段。

如需瞭解已排定發布日期的版本,請前往 GitHub 查看我們的發布問題

發布程序和政策

至於滾動式發布,程序相當簡單:大約每兩週就會建立新版本,並與 Google 內部 Blaze 版本保持一致。由於快速發布時間表,我們不會將任何變更回溯至滾動式發布版本。

針對 LTS 版本,我們會遵循下列程序和政策:

  1. 判斷版本的基準提交內容。
    • 對於新的 LTS 主要版本,基準提交是主分支的 HEAD。
    • 對於次要版本或修補程式版本,基準提交是相同 LTS 版本目前最新版本的 HEAD。
  2. 從基準版本提交內容建立名為 release-<version> 的版本分支。
  3. 透過提交要求將變更內容回移至發布分支。
    • 社群可以針對相關的 GitHub 問題或 PR 回覆「@bazel-io flag」,建議將特定提交項目回溯至舊版,以便標示為潛在的發布阻礙因素,Bazel 團隊會對這些問題進行分類,並決定是否要回溯提交項目。
    • 只有主分支上的回溯相容性提交內容才能回溯,解決合併衝突的其他次要變更則是可接受的。
  4. 使用 Cherry-Pick Request Issue 為 Bazel 維護人員回報變更。

    • Bazel 維護人員可以要求將特定提交內容挑選至發布分支。您可以在 GitHub 上建立 cherry-pick 要求,啟動這項程序。做法如下。

      1. 開啟cherry-pick 要求
      2. 填寫要求詳細資料
        • 標題:請提供簡潔且具描述性的請求標題。
        • 提交 ID:輸入要選取的提交 ID。如果有多個提交,請以半形逗號分隔。
        • Category:指定要求的類別。
        • 審查人員:如果有多位審查人員,請以半形逗號分隔其 GitHub ID。
      3. 設定里程碑
        • 找到「里程碑」部分,然後按一下該設定。
        • 選取適當的 X.Y.Z 版本阻擋項目。這項動作會觸發精選機器人,處理您對「release-X.Y.Z」分支的要求。
      4. 提交問題
        • 填妥所有詳細資料並設定「miastone」後,請提交問題。
    • 挑選機器人會處理要求,並在提交內容符合挑選條件時通知您。如果修訂版本可進行精選,也就是在精選修訂版本時不會發生合併衝突,機器人就會建立新的提取要求。當 Bazel 團隊成員核准提取要求後,系統就會精選提交內容並合併至發布分支。如需完成的取樣要求視覺化範例,請參閱這個示例

  5. 找出發布阻礙因素,並修正發布分支中的問題。

    • 在 Bazel CI 上,發布分支會使用相同的測試套件,在提交後下游測試管道中進行測試。Bazel 團隊會監控發布分支的測試結果,並修正任何回歸現象。
  6. 在解決所有已知的發布阻斷因素後,從發布分支建立新的候選發布版本。

    • 發布候選版本會在 bazel-discuss 上發布,Bazel 團隊會監控候選版本的社群錯誤回報。
    • 如果發現新的發布阻礙因素,請返回上一個步驟,在解決所有問題後建立新的候選版本。
    • 建立第一個候選版本後,不允許將新功能新增至版本分支;精選功能僅限於重大修正。如果需要選取特定內容,要求者必須回答下列問題:為何這項變更至關重要,以及帶來哪些好處?這項變更引入回歸的可能性有多高?
  7. 如果沒有發現其他發布阻礙因素,請將候選版推送為正式版

    • 針對修補程式版本,請在最後一個候選版本發布後,至少推送兩個工作天的版本。
    • 對於主要和次要版本,請在最後一個候選版本發布後的兩個工作天內推送版本,但不得早於第一個候選版本發布後一週。
    • 只有在下一個工作天是工作天的情況下,系統才會推送版本。
    • 我們會在 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 二分法功能的說明文件。

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

規則相容性

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