版本发布指南
版本命名详见版本控制文档。 请先阅读该页面以了解 major、minor 和 patch 版本控制。
发布计划
-
每四个月发布一个 minor 版本,分别在 1 月/2 月、5 月/6 月、9 月/10 月发布。
-
维护最新的三个 minor 版本(minor 是点分隔版本中的第二个数字,例如,在 3.4.2 中,4 是 minor 版本)。
由于每四个月发布一个 minor 版本,因此预计一个 minor 版本最多支持一年。
-
在维护中的 minor 版本中,每隔 2-3 周发布一个 patch 版本。
Pull Request 类型
StarRocks 中的每个 pull request 都应以类型命名,包括 feature、enhancement 和 bugfix。
Feature
- 定义:Feature 是一种数据库中以前不存在的新功能或特性。 它添加了新的行为或显着扩展了现有功能。
- 示例
- 添加一种新的数据结构类型(例如,一种新的表类型或索引类型)。
- 实现一种新的查询语言功能(例如,一种新的 SQL 函数或运算符)。
- 引入一个新的 API 端点或接口以与数据库进行交互。
Enhancement
- 定义:Enhancement 是对现有功能或特性的改进。 它不会引入全新的行为,而是使现有功能更好、更快或更高效。
- 示例
- 优化查询执行计划的性能。
- 改进数据库管理工具的用户界面。
- 通过添加更细粒度的访问控制来增强安全功能。
Bugfix
- 定义:Bugfix 是对现有代码中的错误或缺陷的更正。 它解决了阻止数据库正常或按预期运行的问题。
- 示例
- 修复在某些查询条件下发生的崩溃。
- 更正查询返回的不正确结果。
- 解决内存泄漏或资源管理问题。
Cherry-pick 规则
我们为 minor 版本定义了一些状态,以辅助 cherry-pick 管理。 您可以在 .github/.status
文件中找到版本状态。
例如,在本文档发布时,StarRocks 3.4 版本处于 feature-freeze
状态,而 3.3 版本处于 bugfix-only
状态。 要验证这一点
git switch branch-3.3
cat .github.status
bugfix-only
open
:可以合并所有类型的 pull request,包括 feature、enhancement 和 bugfix。feature-freeze
:只能合并 enhancement 和 bugfix pull request。bugfix-only
:只能合并 bugfix pull request。code-freeze
:除了关键 CVE 修复之外,不能合并任何 pull request。
minor 版本状态会随着一些基线触发器而改变,如下所示,如果需要,也可以提前更改。
- 当创建 minor 版本分支时,它变为
open
并在发布之前保持open
状态。 - 当发布 minor 版本时,它变为
feature-freeze
。 - 当发布下一个 minor 版本时,前一个 minor 版本变为
bugfix-only
。 - minor 版本保持
bugfix-only
状态,直到发布三个以上的 minor 版本,然后变为code-freeze
。
示例
- 创建 branch-5.1,此分支处于
open
状态,直到它通过发布候选版本并公开发布。 - 一旦公开发布 5.1 版本,它将进入
feature-freeze
状态。 - 一旦公开发布 5.2 版本,5.1 切换到
bugfix-only
。 - 当所有版本 5.1、5.2、5.3 和 5.4 都发布时
- 5.4 处于
feature-freeze
状态 - 5.3 处于
bugfix-only
状态 - 5.2 也处于
bugfix-only
状态 - 5.1 处于
code-freeze
状态
- 5.4 处于