本文档用于说明 PaddleOCR 的标准发版流程。
当前流程支持以下两类发布:
bump patch:例如3.4.0 -> 3.4.1bump minor:例如3.4.x -> 3.5.0
对于 bump major:
- 当前流程暂不支持直接覆盖这类场景
- 如需发布大版本,需要单独讨论并设计额外流程,例如引入额外分支或新的版本准备方式
- 日常开发在
main分支进行 - 正式发布只在
release/X.Y分支进行 - 正式标签只使用
vX.Y.Z - 不在
main分支打正式发布标签
先确认本次发布属于哪一条版本线,以及目标版本号。
示例:
- 发布
3.4.1,对应分支为release/3.4 - 发布
3.5.0,对应分支为release/3.5
如果该版本线尚未建立,则从 main 创建对应的 release/X.Y 分支。
如果该版本线已存在,则直接切换到该分支继续发版准备。
要求:
- 一个 minor 版本线对应一个固定的
release/X.Y分支 - 该分支只承载该版本线的发布内容和补丁修复
根据本次发布范围,从 main 将需要发布的提交按需 cherry-pick 到 release/X.Y,直到版本内容 ready。
要求:
- 只挑选本次发布需要的内容
- 避免把与本次发布无关的新功能带入 release 分支
- 如果 release 分支上出现专门的发布修复,也应仅限于本次发布范围
在 release/X.Y 上完成发布前检查。
至少应包括:
- 当前分支正确
- 工作区干净
- 版本号符合预期
- 关键功能验证通过
- 必要的测试、构建、打包和回归通过
- 发布说明已经准备好
确认版本 ready 后,在 release/X.Y 分支上打正式标签:
- 标签格式必须为
vX.Y.Z
示例:
v3.4.1v3.5.0
要求:
- 标签必须打在本次正式发布对应的 release 分支上
- 不使用开发态标签作为正式发布标签
在 GitHub 上基于本次正式标签创建 Release。
如果本次发布是新的 minor 版本首发,或本次发布涉及 PaddleX 依赖变化,则在正式标签发布前后同步完成相关更新。
至少应包括:
- 检查
pyproject.toml中paddlex相关依赖约束是否与本次发布版本匹配 - 检查安装说明、升级说明和发布说明中的版本信息是否与本次发布一致
完成要求:
paddlex相关依赖约束与本次发布目标一致- 文档中的版本信息与本次发布版本一致
当一条新的 release/X.Y 发布线完成首个正式版本发布后,需要将该 release/X.Y 的 lineage 同步回 main。
这一步是当前流程中的固定步骤,每条新的 minor 发布线至少执行一次。
目的:
- 让
main正确感知该发布线已经完成的正式版本 - 保持后续开发与发布节奏一致
要求:
- 每条新的
release/X.Y在首个正式版本发布后执行一次 - 同一条
release/X.Y后续如果继续发布补丁版本,通常不要求重复执行
发布完成后:
main继续进行后续开发release/X.Y继续维护该版本线
如果后续还要发布该版本线的补丁版本:
- 继续在
release/X.Y上准备补丁 - 从
main按需cherry-pick - 重复执行本 SOP 中的发布步骤
适用场景:
- 修复线上问题
- 小范围兼容性修复
- 文档、依赖或稳定性补丁
处理方式:
- 在现有
release/X.Y分支上继续准备内容 - 打下一个 patch 标签,例如
v3.4.2
适用场景:
- 开启一条新的发布线
- 发布下一阶段稳定版本,例如
3.5.0
处理方式:
- 从
main建立新的release/X.Y - 按标准流程准备版本内容
- 打首个正式标签,例如
v3.5.0 - 如有需要,同步更新
paddlex相关依赖约束 - 发布后将该 release 分支的 lineage 同步回
main
当前结论:
- 暂不纳入本 SOP
- 后续需要单独讨论并设计流程
在新的方案明确之前,不建议直接套用当前 minor/patch 的做法处理 major 发布。
每次发版前,请确认以下事项:
- 已确认目标版本号和对应 release 分支
- release 分支中的内容已经 ready
- 发布范围已经收敛
- 关键测试和回归已通过
- 发布说明已准备完成
- 正式标签格式为
vX.Y.Z - GitHub Release 已创建
- 如本次是该
release/X.Y的首个正式版本,发布完成后已将 lineage 同步回main
- 新功能优先进入
main - 正式发布始终通过
release/X.Y执行 - 补丁版本始终在对应的
release/X.Y上维护 - 每条新的
release/X.Y在首个正式版本发布后执行一次 lineage 同步
如当前流程发生调整,应同步更新本文档。