v1.9.1 · 修掉「有没有 DB 迁移」那格永远显示「无法确定」
一个修复,无 UI 变化、无 DB 迁移。
「这中间有没有 DB 迁移」那一格,之前在真实环境里永远不工作
v1.9.0 的版本卡里,我把「有没有动过 schema」称作和别的更新检查最不一样的一格 —— 因为我们的红线是「回滚只回 jar 不回 DB」,这一格直接决定你能不能安全退回来。
结果它有个 bug:app.version 是 1.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 断言