Files
wehub-resource-sync e904b667c6
Build/Publish Develop Docs / deploy (push) Failing after 1s
PaddleOCR Code Style Check / check-code-style (push) Failing after 1s
PaddleOCR PR Tests GPU / detect-changes (push) Failing after 1s
PaddleOCR PR Tests / detect-changes (push) Failing after 1s
PaddleOCR PR Tests GPU / test-pr-gpu (push) Has been cancelled
PaddleOCR PR Tests / test-pr (push) Has been cancelled
PaddleOCR PR Tests GPU / test-pr-gpu-impl (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.13) (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.8) (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.9) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:59:26 +08:00

195 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PaddleOCR Release SOP
[English](./RELEASING.md)
## 适用范围
本文档用于说明 PaddleOCR 的标准发版流程。
## 版本类型
当前流程支持以下两类发布:
- `bump patch`:例如 `3.4.0 -> 3.4.1`
- `bump minor`:例如 `3.4.x -> 3.5.0`
对于 `bump major`
- 当前流程暂不支持直接覆盖这类场景
- 如需发布大版本,需要单独讨论并设计额外流程,例如引入额外分支或新的版本准备方式
## 发版原则
- 日常开发在 `main` 分支进行
- 正式发布只在 `release/X.Y` 分支进行
- 正式标签只使用 `vX.Y.Z`
- 不在 `main` 分支打正式发布标签
## 标准发版流程
### 1. 确认发布目标
先确认本次发布属于哪一条版本线,以及目标版本号。
示例:
- 发布 `3.4.1`,对应分支为 `release/3.4`
- 发布 `3.5.0`,对应分支为 `release/3.5`
### 2. 创建或切换到 release 分支
如果该版本线尚未建立,则从 `main` 创建对应的 `release/X.Y` 分支。
如果该版本线已存在,则直接切换到该分支继续发版准备。
要求:
- 一个 minor 版本线对应一个固定的 `release/X.Y` 分支
- 该分支只承载该版本线的发布内容和补丁修复
### 3. 从 main 挑选发布内容
根据本次发布范围,从 `main` 将需要发布的提交按需 `cherry-pick``release/X.Y`,直到版本内容 ready。
要求:
- 只挑选本次发布需要的内容
- 避免把与本次发布无关的新功能带入 release 分支
- 如果 release 分支上出现专门的发布修复,也应仅限于本次发布范围
### 4. 完成发布前检查
`release/X.Y` 上完成发布前检查。
至少应包括:
- 当前分支正确
- 工作区干净
- 版本号符合预期
- 关键功能验证通过
- 必要的测试、构建、打包和回归通过
- 发布说明已经准备好
### 5. 打正式标签
确认版本 ready 后,在 `release/X.Y` 分支上打正式标签:
- 标签格式必须为 `vX.Y.Z`
示例:
- `v3.4.1`
- `v3.5.0`
要求:
- 标签必须打在本次正式发布对应的 release 分支上
- 不使用开发态标签作为正式发布标签
### 6. 发布 GitHub Release
在 GitHub 上基于本次正式标签创建 Release。
### 7. 更新依赖约束与发布说明
如果本次发布是新的 minor 版本首发,或本次发布涉及 PaddleX 依赖变化,则在正式标签发布前后同步完成相关更新。
至少应包括:
- 检查 `pyproject.toml``paddlex` 相关依赖约束是否与本次发布版本匹配
- 检查安装说明、升级说明和发布说明中的版本信息是否与本次发布一致
完成要求:
- `paddlex` 相关依赖约束与本次发布目标一致
- 文档中的版本信息与本次发布版本一致
### 8. 将 release 分支的 lineage 同步回 main
当一条新的 `release/X.Y` 发布线完成首个正式版本发布后,需要将该 `release/X.Y` 的 lineage 同步回 `main`
这一步是当前流程中的固定步骤,每条新的 minor 发布线至少执行一次。
目的:
-`main` 正确感知该发布线已经完成的正式版本
- 保持后续开发与发布节奏一致
要求:
- 每条新的 `release/X.Y` 在首个正式版本发布后执行一次
- 同一条 `release/X.Y` 后续如果继续发布补丁版本,通常不要求重复执行
### 9. 进入下一轮开发或补丁发布
发布完成后:
- `main` 继续进行后续开发
- `release/X.Y` 继续维护该版本线
如果后续还要发布该版本线的补丁版本:
- 继续在 `release/X.Y` 上准备补丁
-`main` 按需 `cherry-pick`
- 重复执行本 SOP 中的发布步骤
## 不同 bump 类型的处理方式
### Patch 发布
适用场景:
- 修复线上问题
- 小范围兼容性修复
- 文档、依赖或稳定性补丁
处理方式:
- 在现有 `release/X.Y` 分支上继续准备内容
- 打下一个 patch 标签,例如 `v3.4.2`
### Minor 发布
适用场景:
- 开启一条新的发布线
- 发布下一阶段稳定版本,例如 `3.5.0`
处理方式:
-`main` 建立新的 `release/X.Y`
- 按标准流程准备版本内容
- 打首个正式标签,例如 `v3.5.0`
- 如有需要,同步更新 `paddlex` 相关依赖约束
- 发布后将该 release 分支的 lineage 同步回 `main`
### Major 发布
当前结论:
- 暂不纳入本 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 同步
如当前流程发生调整,应同步更新本文档。