Files
prompt-optimizer/docs/project/release-notes.md

137 lines
4.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.
# 版本说明与 Release 发布
## 目标
从当前流程开始,仓库内的版本说明文件是 GitHub Release 正文的唯一事实来源。
- `CHANGELOG.md`:版本索引与摘要入口
- `releases/vX.Y.Z.en.md`:某个版本的英文完整说明
- `releases/vX.Y.Z.zh-CN.md`:某个版本的中文完整说明
- `.github/workflows/release.yml`:读取两个版本文件,生成 GitHub Release 摘要正文
## 文件约定
每次发布都需要同时维护两处内容:
1. `CHANGELOG.md`
- 顶部必须是当前版本
- 必须包含一行英文摘要和一行中文摘要
- 必须分别链接到 `releases/vX.Y.Z.en.md``releases/vX.Y.Z.zh-CN.md`
2. `releases/vX.Y.Z.en.md`
- 标题固定为 `# Prompt Optimizer vX.Y.Z`
- 必须包含 `## Summary`
- 必须包含以下完整栏目:
- `## Highlights`
- `## Product Updates`
- `## Fixes`
- `## Breaking Changes / Upgrade Notes`
- `## Developer Notes`
3. `releases/vX.Y.Z.zh-CN.md`
- 标题固定为 `# Prompt Optimizer vX.Y.Z`
- 必须包含 `## 概括`
- 必须包含以下完整栏目:
- `## 亮点`
- `## 产品更新`
- `## 修复`
- `## 破坏性变更 / 升级说明`
- `## 开发者说明`
`Summary / 概括` 为正式发布必填项GitHub Release 会优先使用它们来生成摘要正文。
## 常用命令
```bash
# 1. 生成当前版本的版本说明模板
pnpm release:notes:new
# 或者显式指定版本
pnpm release:notes:new 2.9.0
# 2. 校验当前版本说明
pnpm release:notes:check
# 或者显式指定版本
pnpm release:notes:check v2.9.0
# 3. 校验历史版本条目(用于回填旧版本 release 文档)
pnpm release:notes:check:entry v2.6.0
```
`release:notes:new` 会同时生成英文和中文模板,并附带一段仅供编辑参考的 commit 草稿区。
`release:notes:check` 用于正式发布前的硬门槛校验,要求目标版本必须位于 `CHANGELOG.md` 顶部。
`release:notes:check:entry` 用于历史版本回填,只要求 `CHANGELOG.md` 中存在对应版本条目,不要求它在顶部。
## 推荐发布流程
```bash
# 1. 更新版本号
pnpm version patch
# 2. 生成版本说明模板
pnpm release:notes:new
# 3. 手动完善 releases/vX.Y.Z.en.md 与 releases/vX.Y.Z.zh-CN.md
# 并更新 CHANGELOG.md 顶部摘要
# 4. 校验版本说明
pnpm release:notes:check
# 5. 创建 tag会再次自动校验
pnpm version:tag
# 6. 推送 tag
pnpm version:publish
```
## 校验规则
以下情况会导致 `pnpm release:notes:check` 失败:
- 缺少对应版本的英文或中文 release 文件
- 标题版本号与文件名不一致
- 缺少 `## Summary``## 概括`
- 必需栏目缺失或顺序错误
- `CHANGELOG.md` 顶部不是当前版本
- `CHANGELOG.md` 顶部没有同时链接英文和中文版本说明
- 正文中仍然存在 `TODO``TBD``待补充``XX` 等占位内容
对于历史版本回填,可以使用 `pnpm release:notes:check:entry <version>`。它会沿用同样的正文结构校验,但把 `CHANGELOG.md` 校验范围放宽为“存在对应版本条目”。
## GitHub Release 行为
发布工作流不会再从 commit 列表自动拼接公开正文,而是优先读取:
- `releases/vX.Y.Z.en.md` 中的 `## Summary`
- `releases/vX.Y.Z.zh-CN.md` 中的 `## 概括`
然后生成:
- 英文区块
- `Summary`
- `macOS Security Note`
- 安装文档链接
- 英文全文链接
- 中文区块
- `概括`
- `macOS 安全提示`
- 安装文档链接
- 中文全文链接
其中 `macOS Security Note / macOS 安全提示` 为固定内容,用来明确说明:
- “已损坏”
- “无法验证开发者”
这类提示通常来自 macOS 的隔离属性,不一定是应用本身损坏。
如果历史版本缺少概括,渲染逻辑可以回退为全文;但正式发布流程会被校验阻塞。
`workflow_dispatch` 中手动输入的 `version` 仍然用于“当前所选 ref 上准备发布的版本”,不是用来从当前主干回补任意历史版本的重新发布。
如果版本说明校验失败:
- 构建任务不会继续执行
- GitHub Release 不会创建成功