如原始部落格文章所宣布,Bazel 4.0 以上版本支援兩種版本:滾動式版本和長期支援 (LTS) 版本。本頁面提供 Bazel 版本模型的最新資訊。
發布版本管理
Bazel 使用 major.minor.patch Semantic 版本管理架構。
- 主要版本包含與先前版本不相容的功能。每個主要 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 版本
- 主要版本:新的 LTS 版本預計將從 HEAD 版本中切斷 每 12 個月。新的 LTS 版本推出後,會立即進入「Active」階段,而先前的 LTS 版本則會進入「Maintenance」階段。
- 次要版本:雖然有效 LTS 測試群組會推出新的小版本 每 2 個月發布一次
- 修補程式版本:LTS 版本在「Active」和「Maintenance」階段,我們會視需要發布新的修補程式版本,以修正重大錯誤。
- 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 月 |
您可以在此版本找到所有 Bazel 版本 頁面。
發布程序和政策
對滾動式的版本來說,這項程序相當簡單:大約每兩週一次, 新版本的建構方式,與 Google 內部使用的基準一致 Blaze 版本。由於發布時間縮短,我們不會將任何變更向後移植 。
針對 LTS 版本,程序和政策如下:
- 決定版本的基準修訂版本。
- 對於新的 LTS 主要版本,基準提交項目是主分支的 HEAD。
- 對於次要版本或修補程式版本,基準提交是相同 LTS 版本目前最新版本的 HEAD。
- 從基準版本提交內容建立名為
release-<version>
的版本分支。 - 透過 PR 將變更向後移植到發布分支版本。
- 社群可以針對相關的 GitHub 問題或 PR 回覆「
@bazel-io flag
」,建議將特定提交項目回溯至舊版,以便標示為潛在的發布阻礙因素,Bazel 團隊會對這些問題進行分類,並決定是否要回溯提交項目。 - 只有主分支上的回溯相容性提交內容才能回溯,解決合併衝突的其他次要變更則是可接受的。
- 社群可以針對相關的 GitHub 問題或 PR 回覆「
- 找出發布阻礙並修正發布分支版本的問題。
- 在解決所有已知的發布阻斷因素後,從發布分支建立新的候選發布版本。
- 候選版公布日期: bazel-discuss Bazel 團隊會監控候選人的社群錯誤報告。
- 如果發現新的發布阻礙,請返回最後一個步驟, 解決所有問題後,建立新的候選版。
- 建立第一個候選版本後,不得將新功能新增至發布分支。
- 如果不再發布,請將候選版推送為正式版
發現障礙物
- 如果是修補程式版本,請至少在兩個工作天後推送該版本 最後一個候選版本已過舊
- 對於主要和次要版本,請在最後一個候選版本發布後的兩個工作天內推送版本,但不得早於第一個候選版本發布後一週。
- 只有在下一個工作天是工作天的情況下,系統才會推送版本。
- 我們會在 bazel-discuss 上發布這項版本,並由 Bazel 團隊監控及處理新版本的社群錯誤回報。
回報迴歸問題
如果使用者在新的 Bazel 版本、候選版本,甚至是 Bazel 的 HEAD 中發現回歸現象,請在 GitHub 回報錯誤。您可以使用 Bazelisk 對肇事的提交內容進行二分法,並將這項資訊納入錯誤報告。
舉例來說,如果 Bazel 6.1.0 建構作業執行成功,但第二個建構作業失敗 6.2.0 版的候選版,您可以透過
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
如需重現問題,您可以設定 BAZELISK_SHUTDOWN
或 BAZELISK_CLEAN
環境變數,以便執行對應的 Bazel 指令來重設建構狀態。詳情請參閱 Bazelisk 二分法功能說明文件。
請記得將 Bazelisk 升級至最新版本,才能使用 bisect 功能。
規則相容性
如果您是規則作者,且想與不同的 Bazel 版本,請查看規則 相容性網頁。