feat: update release

This commit is contained in:
2026-08-25 14:42:26 +08:00
parent ad6695245b
commit a7a201962a
2 changed files with 48 additions and 19 deletions
+34 -7
View File
@@ -72,13 +72,38 @@ tag 派生版本,且发布说明不要求写回仓库时,不产生仓库修
以最近一个适用于当前发布线的稳定 tag 为起点,以 release commit 为终点,结合项目
CHANGELOG、已合并 PR/MR 和实际 diff 生成更新说明。首次发布使用项目声明的发布基线;
没有声明时核对完整可达历史,并在说明中明确这是首次发布。说明覆盖实际存在的新增、
变更、修复、维护或文档变化;破坏性变化、迁移步骤和已知限制存在时必须单独标明。没有
某一类别时可以省略该类别,不要生成空标题或模板占位。
没有声明时核对完整可达历史,并在说明中明确这是首次发布。
正式版本的 tag message 使用以下固定格式;内容必须基于本次实际变更,并与 CHANGELOG
或 PR/MR 发布说明保持一致:
```text
<tag>
Summary:
- <一句话概括本版本>
Changes:
- <变更 1>
- <变更 2>
Validation:
- <验证命令及结果>
Base commit: <release commit>
```
`Summary``Changes``Validation``Base commit` 四个字段必须全部存在,不能只有
版本号、提交标题或空 message。没有仓库 CHANGELOG 时,也必须按此格式补齐字段。
`Changes` 只写入实际存在的新增、变更、修复、维护或文档变化;破坏性变化、迁移步骤和
已知限制存在时必须单独标明。没有实际功能变更时不得伪造条目,应明确说明这是文档、
打包或发布元数据修订。不要生成空标题或模板占位。`Validation` 写入本次实际执行或已经
确认通过的验证命令及结果,不要编造未执行的检查。`Base commit` 必须是本次 release
commit。
每条说明都要能追溯到范围内的提交、PR/MR 或项目 CHANGELOG。提交消息和 PR/MR 文本只
作为待核对素材,不能覆盖实际 diff,也不能把范围外变化写入本次说明。tag 创建前冻结
完整多行说明tag 已推送后不再修改。
作为待核对素材,不能覆盖实际 diff,也不能把范围外变化写入本次说明。创建 tag 前先
生成并检查完整 message,再冻结tag 已推送后不再修改。
## 验证 release commit
@@ -90,9 +115,11 @@ commit 为准。获取远端 base 或允许的维护分支后,确认 release c
正式 tag 必须满足:
- tag 名按项目格式由目标版本唯一生成。
- tag 必须是 annotated tagmessage 必须是冻结后的完整更新说明,最少包括
`Summary``Changes``Validation``Base commit`;不能只有版本号、提交标题或空
message。禁止 lightweight release tag。
- 远端没有同名 tag,或同名 tag 已经准确指向本次 commit。
- annotated tag 显式指向 release commit,并包含冻结后的完整更新说明;禁止 lightweight
release tag。
- annotated tag 显式指向 release commit
- 项目要求签名时,push 前已成功创建 signed tag,并在本地验证签名通过;不可用或失败
时停止,不得改用 unsigned tag。
- 推送后从远端重新读取 tag object,核对对象类型和完整说明,再将 annotated tag 解引用