发布模型

报告问题 查看源代码 每晚 · 7.4。 ,了解所有最新动态。 7.3 · 7.2 · 7.1敬上 · 7.0敬上 · 6.5

正如原始博文中所宣布的那样,Bazel 4.0 及更高版本支持两个发布轨道:滚动发布和长期支持 (LTS) 发布。本页介绍了 有关 Bazel 发布模型的信息

发布版本控制

Bazel 使用 major.minor.patch 语义 版本控制方案。

  • 主要版本包含与上一个版本不向后兼容的功能。每个主要 Bazel 版本都是一个 LTS 版本。
  • 次要版本包含从主分支向后移植的向后兼容的 bug 修复和功能。
  • 补丁版本包含关键 bug 修复。

此外,预发布版本会以 日期后缀。

例如,每种类型的新版本都会产生以下版本号:

  • 主要:6.0.0
  • 次要版本:6.1.0
  • 补丁:6.1.2
  • 预发布:7.0.0-pre.20230502.1

支持阶段

对于每个主要 Bazel 版本,都有四个支持阶段:

  • 滚动:此主要版本仍处于预发布阶段,Bazel 团队 从 HEAD 发布滚动版本。
  • 有效:此主要版本是当前有效的 LTS 版本。Bazel 团队将重要功能和问题修复向后移植到次要版本中。
  • 维护:此主要版本是正在维护的一个 LTS 版本 模式。Bazel 团队仅承诺将针对安全问题和操作系统兼容性问题的重大 bug 修复回移到此 LTS 版本。
  • 已弃用:Bazel 团队不再为此主要资源提供支持 则所有用户都应迁移到较新的 Bazel LTS 版本。

发布频率

Bazel 会定期发布两个发布轨道的版本。

滚动版本

  • 滚动发布会与 Google Blaze 发布同步,大约每两周从 HEAD 发布一次。这是下一个 Bazel LTS 的预览版 发布。
  • 滚动版本可能包含不兼容的更改。不兼容的标志是 推荐用于重大破坏性更改、推出不兼容的更改 应遵循我们的向后兼容性 政策

LTS 版本

  • 主要版本:大约每 12 个月从 HEAD 中提取一次新的 LTS 版本。新的 LTS 版本发布后,会立即进入有效 阶段,而上一个 LTS 版本将进入维护阶段。
  • 次要版本:活跃 LTS 轨道上的新的次要版本预计 每 2 个月发布一次。
  • 补丁版本:对于处于“活跃”和“维护”阶段的 LTS 版本,我们预计会根据需要发布新的补丁版本来修复重大 bug。
  • Bazel LTS 版本在维护阶段待满 2 年后会进入“已废弃”阶段。

如需了解计划发布的版本,请查看我们的版本 问题

支持矩阵

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 版本的当前最新版本。
  2. 从基准提交创建一个名为 release-<version> 的版本分支。
  3. 通过 PR 将更改向后移植到发布分支。
    • 社区可以通过回复评论来建议向后移植的特定提交内容 “@bazel-io flag”在相关 GitHub 问题或 PR 中将其标记为潜在 则 Bazel 团队会对这些障碍进行分类,并决定是否 向后移植提交的内容
    • 只有主分支上的向后兼容提交才能向后移植, 接受其他细微更改来解决合并冲突。
  4. 找出发布阻碍问题并修复在发布分支上发现的问题。
    • 在 Bazel CI 上,发布分支会在提交后下游测试流水线中使用相同的测试套件进行测试。Bazel 团队会监控版本的测试结果 并修复发现的所有回归问题。
  5. 在已知版本分支的情况下,根据新的候选版本创建新的候选版本 版本拦截器已得到解决。
    • 候选版本宣布于 bazel-discuss, Bazel 团队会监控候选者的社区 bug 报告。
    • 如果发现新的发布阻碍,请返回上一步并 解决所有问题后创建新的候选版本。
    • 创建第一个候选版本后,不得向发布分支添加新功能。
  6. 如果没有发现其他发布阻碍因素,则将候选版本作为正式版本推送
    • 对于补丁版本,请在发布至少 2 个工作日后推送版本 最后一个候选版本已发布
    • 对于主要和次要版本,请在两个工作日后推送版本 候选版本已推出,但不要早于该日期的一周后 第一个候选版本已发布
    • 只有在次日为工作日时,系统才会推送版本。
    • 新专辑的发布日期 bazel-COMMENT、 Bazel 团队会监控并处理社区 bug 报告, 发布。

报告回归问题

如果用户在新的 Bazel 版本、候选版本甚至 HEAD 的 Bazel,请报告以下 bug: GitHub您可以使用 Bazelisk 对引发罪魁祸首的提交进行二分法处理,并将此信息包含在 bug 中 报告。

例如,如果构建使用 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 版本,请参阅规则 兼容性页面。