mirror of
https://github.com/linshenkx/prompt-optimizer.git
synced 2026-05-07 22:18:23 +08:00
137 lines
4.1 KiB
Markdown
137 lines
4.1 KiB
Markdown
# 版本说明与 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 不会创建成功
|