Skip to content

ci: 发版流程加演练模式,试标签格式不用真发一版 - #7

Merged
modusensus merged 2 commits into
mainfrom
ci/release-dry-run
Nov 12, 2026
Merged

modusensus merged 2 commits into
mainfrom
ci/release-dry-run

Conversation

@modusensus

Copy link
Copy Markdown
Member

手动触发 release.yml 时多一个 dry_run 开关:照样跑双档测试和全部校验(版本号对不对得上、registry 上有没有、正文怎么拼),把 Release 标题与正文打在日志里,不发 npm、不建 Release。

为什么加这个

之前试标签格式只有一个办法:真发一版。但 npm 上的版本号发出去就收不回来——0.9.0 那次回查误判已经演示过一遍,版本号浪费了就浪费了。有了演练模式,v0.10.0 的正文长什么样、安装段对不对、compare 链接拼得对不对,都能先看一眼。

演练时标签可以还不存在:反正不发布,就是拿来看格式的,git describe 找不到就退回用当前检出点当终点。

gh workflow run release.yml -f tag=v0.10.0 -f dry_run=true

顺手改的一处

concurrency 的分组从 github.ref 改成目标标签:演练 v0.10.0 和真推 v0.10.0 落在同一组里,免得演练还没跑完,真发版就跟它抢同一个版本号。

验证

  • 测试补 8 条断言(开关存在、DRY_RUN 进 env、发 npm/回查/建 Release 三处都有闸、演练会打正文、标签不存在时退回 HEAD、演练检出分支而非标签)
  • 四条变异自证,都能红:M9 去掉发 npm 的闸 / M10 去掉建 Release 的闸 / M12 DRY_RUN 不进 env / M13 给演练步骤加个假条件
  • M13 第一版没红——原断言只查「name 行 + if: env.DRY_RUN == 'true'」存在,把条件改成 && false 照样匹配。补成要求 if 行后必须直接换行(后面接 run:)才红。
  • node tests/all.mjs → 8 套全绿 24516ms
  • 本地按 workflow 里那段 bash 原样跑过「收集提交」:不存在的标签 → base=HEAD prev=v0.9.0 commits=5;已存在的标签 → base=v0.9.1。两种都对。

没做的

  • 没在真 GitHub 上跑过演练(合进去之后第一次跑才是真验证)
  • 没给 push 触发的路径加任何新行为:那条路 DRY_RUN 恒为 false,与合并前完全一致

手动触发 release.yml 时多一个 dry_run 开关:照样跑双档测试和全部校验
(版本号对不对得上、registry 上有没有、正文怎么拼),把 Release 标题与
正文打在日志里,但不发 npm、不建 Release。

演练时标签可以还不存在——就是拿来看格式的,git describe 找不到就退回
用当前检出点当终点。

顺带把 concurrency 的分组从 ref 改成目标标签:演练 v0.10.0 和真推
v0.10.0 落在同一组里,免得演练没跑完真发版就跟它抢版本号。

测试补 8 条断言,四条变异自证(M9 去掉发 npm 的闸 / M10 去掉建
Release 的闸 / M12 DRY_RUN 不进 env / M13 演练步骤加假条件)都能红。
演练模式实跑时发现:release job 打「共 N 条提交」,6 条提交只数出 5 条。
原因是 git log --pretty=format: 不在最后一条后补换行,wc -l 数的其实是
换行符个数,末尾那条永远漏掉。

改用 git rev-list --count,按提交对象数,不受输出格式影响。

这个数只打在日志里、不影响 Release 正文(正文按行生成),但数错了看起来
就像漏了提交,排查时容易被带偏。
@modusensus
modusensus merged commit 45a6dc6 into main Nov 12, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant