Files
octopus-workflow/core/checklists/release.md
T

98 lines
6.3 KiB
Markdown
Raw Normal View History

# Release 检查清单
> 发版前自检。Producer (Worker) 在 Phase 1 和 Phase 6 完整过一遍。
> **维度命名空间(dimension namespace)**: 本清单中的维度代码(如 TST/BEH/GATE/REG)是**清单局部(checklist-local)**标识符,仅在本文档内唯一;其他清单可能对相同字母串绑定不同概念(如 code-review.md 的 TST=Test Quality、verification.md 的 TST=Test Suite Completeness、port.md 的 TST=Test Porting)。跨清单引用时必须带清单限定(如 code-review.md TST 5.8),不得使用裸代码。
---
## 1. 前置闸门(GATE — Pre-release Gates)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | ---------------------------------------- | ---- | ------ | ---- |
| 1.1 | 工作区干净(`git status` 无未提交变更) | ☐ | ☐ | |
| 1.2 | 在正确的发布分支上 | ☐ | ☐ | |
| 1.3 | 构建通过 | ☐ | ☐ | |
| 1.4 | Typecheck + Lint 通过 | ☐ | ☐ | |
| 1.5 | 测试全部通过 | ☐ | ☐ | |
| 1.6 | 依赖审计已运行,无新增 HIGH/CRITICAL CVE | ☐ | ☐ | |
| 1.7 | 无未跟踪的敏感文件(.npmrc 含 token、.env、credentials、私钥等) | ☐ | ☐ | |
> **注意 1.6**:若使用了无法访问公有 registry 的私有仓库(如自建 Gitea),`bun audit` / `npm audit` 可能报 404。此时无法获取 CVE 数据属于已知盲区,须在 release report 中明确标注「dependency audit: N/A (custom registry)」。
---
## 2. 版本号(VER — Version)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | ------------------------------------------- | ---- | ------ | ---- |
| 2.1 | 已找到上一个 tag(或确认这是首个 tag) | ☐ | ☐ | |
| 2.2 | 所有 commit 已按类型分类(BREAKING/feat/fix/other) | ☐ | ☐ | |
| 2.3 | 版本号遵循 semver(MAJOR.MINOR.PATCH) | ☐ | ☐ | |
| 2.4 | 变更类型与 commit 内容一致 | ☐ | ☐ | |
| 2.5 | 版本号大于上一个 tag | ☐ | ☐ | |
| 2.6 | 版本号已写入所有版本文件 | ☐ | ☐ | |
---
## 3. 变更日志(LOG — Changelog)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | -------------------------------------------- | ---- | ------ | ---- |
| 3.1 | 自上一个 tag 以来的所有非 chore 提交均已收录 | ☐ | ☐ | |
| 3.2 | 条目分组正确(Added/Changed/Fixed/Breaking) | ☐ | ☐ | |
| 3.3 | Breaking change 有迁移说明 | ☐ | ☐ | |
| 3.4 | 每个条目标注了对应的 commit hash | ☐ | ☐ | |
| 3.5 | CHANGELOG.md 已更新(prepend 新版本段) | ☐ | ☐ | |
---
## 4. 标签(TAG — Git Tag)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | --------------------------------------- | ---- | ------ | ---- |
| 4.1 | commit message 含版本号 | ☐ | ☐ | |
| 4.2 | tag 已创建且指向正确 commit | ☐ | ☐ | |
| 4.3 | tag 命名遵循项目约定(默认 v{version}) | ☐ | ☐ | |
---
## 5. 回滚计划(ROLL — Rollback Plan)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | ------------------------------------------- | ---- | ------ | ---- |
| 5.1 | Git 回退步骤已文档化 | ☐ | ☐ | |
| 5.2 | 若有数据库迁移,down migration 存在且已测试 | ☐ | ☐ | |
| 5.3 | 回滚触发条件已明确(延迟/错误率/严重 Bug) | ☐ | ☐ | |
---
## 6. 冒烟测试(SMOKE — Post-release Smoke)
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | ----------------------------------- | ---- | ------ | ---- |
| 6.1 | Tagged commit 可构建 | ☐ | ☐ | |
| 6.2 | 测试全部通过 | ☐ | ☐ | |
| 6.3 | 回到了原始分支 | ☐ | ☐ | |
---
## 7. 产物发布(DIST — Artifact Distribution,octopus 项目)
> 对应 `.octopus/skills/release/SKILL.md` Phase 4b(#2003 退役 CI publish
> 管线后的手工发布流程)。**主仓库 tag + release 对象 ≠ 发布完成**——CLI
> 二进制、公开镜像、桌面 feed 三层外圈全部就位才算。本清单从磁盘读取,
> 作为技能注入被截断时的兜底事实源(v0.25.0 发布时技能注入截断恰好切掉
> Phase 4b,导致外圈整层遗漏——本节由此设立)。
| # | 检查项 | 通过 | 不通过 | 备注 |
| --- | ---------------------------------------- | ---- | ------ | ---- |
| 7.1 | 12 平台 CLI 二进制已构建(tag 的干净 checkout,`bun packages/octopus/script/build.ts`),全部 smoke test 输出版本号 | ☐ | ☐ | Windows 无 `python3` 命令,zip 归档需垫 shim 或手动补齐 |
| 7.2 | 12 个归档已挂到主仓库 release(zip×6 + tar.gz×6) | ☐ | ☐ | |
| 7.3 | (可选,Gitea-only 口径可跳过)npm/docker/AUR 外部 registry 已发或明确跳过 | ☐ | ☐ | `OCTOPUS_GITEA_ONLY=true` |
| 7.4 | `sync-public-assets.sh` 已跑:公共镜像 `Octopus/octopus-release` 的 `v{version}` release 有 12 资产 | ☐ | ☐ | 大 POST 出站不通时经服务器 localhost 中继 |
| 7.5 | `sync-public-install.sh` 已跑:install/install.ps1/README 同步到镜像 main(注意 cp 目标是**根 README.md**,不是 scripts/ 副本) | ☐ | ☐ | |
| 7.6 | `verify-public-sync.sh` PASSED | ☐ | ☐ | |
| 7.7 | Desktop feed 双平台已派发(`desktop-feed.yml` dispatch ×2:beta/prod × win/linux),`latest.yml` 与 `latest-linux.yml` 的 `version:` == CLI 版本 | ☐ | ☐ | concurrency 组已按 platform 分离;资产字节数须与 feed 声明一致 |
| 7.8 | README 下载链接抽查(install 脚本 raw、资产直链、docs 相对链接)匿名可达 | ☐ | ☐ | v0.18 遗留 wiki 坏链由此发现 |