Skip to content

v1.9.1 · 修掉「有没有 DB 迁移」那格永远显示「无法确定」

Choose a tag to compare

@LuoDi-Nate LuoDi-Nate released this 06 Aug 04:03
· 160 commits to master since this release

一个修复,无 UI 变化、无 DB 迁移

「这中间有没有 DB 迁移」那一格,之前在真实环境里永远不工作

v1.9.0 的版本卡里,我把「有没有动过 schema」称作和别的更新检查最不一样的一格 —— 因为我们的红线是「回滚只回 jar 不回 DB」,这一格直接决定你能不能安全退回来。

结果它有个 bug:app.version1.9.0(配置里不带 v),而 git tag 是 v1.9.0。代码把版本号原样拼进 GitHub compare 的 URL,得到 /compare/1.9.0...v1.9.1 —— 这个 ref 不存在,404。于是判定落到 fail-closed 分支,永远显示「无法确定」。

实测对照:

/compare/1.9.0...v1.9.1   → 404   → 「无法确定」
/compare/v1.9.0...v1.9.1  → 200   → 「无 schema 变更 · 可随时回退」

修法是加一步 tag 引用归一化。fail-closed 的设计本身没问题 —— 拿不到清单时说「无法确定」而不是「无变更」是对的;错的是它总是拿不到。

为什么 v1.9.0 的验收没抓到

这个分支只在「有新版」时才执行。而开发机的版本号总是比已发布的最新版更新(项目纪律是动手写代码就先把 app.version bump 到目标版本),所以这个分支在自测里从未被执行过。

是准备发一个版本、给一台跑旧版的实例做真机验证时,核对 compare URL 才发现的。

教训已写进回归用例:只在「本机比线上新」这一种情形下测过的分支,等于没测。 新增守护断言不得再把 app.version 原样拼进 compare。

升级注意

无迁移,回滚只回 jar。升上来之后版本卡的迁移那格才会给出真实结论。


468 单元测试 · 538 黑盒回归 · 74 条 e2e 断言