From 8b93442e670e5df9fe5e208704806b34155eb169 Mon Sep 17 00:00:00 2001 From: ReSerendipity Date: Tue, 22 Sep 2026 17:59:17 +0800 Subject: [PATCH] =?UTF-8?q?docs(release):=20=E5=86=99=E6=B8=85"release=20P?= =?UTF-8?q?R=20=E4=B8=8A=E7=9C=8B=E4=B8=8D=E5=88=B0=20CI"=E8=BF=99?= =?UTF-8?q?=E4=BB=B6=E4=BA=8B=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=AE=83=E5=AF=B9?= =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=8C=E6=AD=A5=E4=BD=8D=E7=9A=84=E5=90=8E?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实测 #120:`gh pr checks 120` 是空的。原因是 GitHub 的固定行为——由 GITHUB_TOKEN 产生的 提交不再级联触发 workflow,而 release PR 的提交正是 bot 用 GITHUB_TOKEN 推的。 这推翻了我自己在 #123 里写下的假设("下一条 release PR 上红在手工位是预期行为,补一个 commit 即可"):那些闸不会在 PR 上红,会红在合并之后的 main 上 —— 那时 Release 已经发出去了。 所以 §1 的第 1 条路补一句硬性动作:合 release PR 之前本地跑 `.venv/Scripts/python.exe -m pytest tests/test_version_consistency.py`。 Signed-off-by: ReSerendipity --- docs/release-governance.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/release-governance.md b/docs/release-governance.md index 06525ca..5eaf755 100644 --- a/docs/release-governance.md +++ b/docs/release-governance.md @@ -39,6 +39,15 @@ 2. 手工:`git tag -a` + `gh release create`(v2.2.2/v2.2.3 走的就是这条)。 手工发版之后 RP 会在下一条 release PR 里把版本号再抬一格(它按 manifest 算), 所以手工发完要把 `.release-please-manifest.json` 一起抬到刚发的版本,否则两边在版本号上互踩。 + > **走第 1 条时,release PR 上看不到任何 CI 检查**(实测 #120:`gh pr checks 120` 是空的)。 + > 原因是 GitHub 的固定行为:由 `GITHUB_TOKEN` 产生的提交不再级联触发 workflow, + > 而 release PR 的提交正是 bot 用 `GITHUB_TOKEN` 推的。 + > 后果很具体:§1 上面列的那些**手工同步位**在 release PR 上不会变红 —— + > `test_all_version_sites_agree` 要到合并进 main 之后才红,那时 Release 已经发出去了。 + > 所以合 release PR 之前**必须本地跑**:`.venv/Scripts/python.exe -m pytest tests/test_version_consistency.py` + > (外加 §2 第 1–2 步的手工位补齐)。要把它变成机器闸,就得给 release PR 配一个 + > 由 `workflow_dispatch`/`push` 触发、能对 release 分支的 head SHA 报 commit status 的作业 —— + > 那是权限决策,不在本文档的"现状"里。 历史上 `release-please.yml` 曾是**结构性空转**(`skip-github-pull-request: true` + 缺 config/manifest + 5 个 v4 不认的入参 → 每次 main push 输出 `found 0 possible releases` 后绿, v2.2.2 因此三次绿 run 都没 Release);已修,现在它真的会开 PR。挂在它下面的