zijunchiang
1acc75f00e
test(release): 逐文件核对「发布包 == 打标签的树」(T-WEB-018)
「发布包里的东西必须等于打标签的那棵树」此前靠人抽查几个文件(README、contracts/VERSION…),
必然会漏。上一轮实测就暴露了两个认知错误:Web 的发布包其实**包含** web-server/test/**
(33 个文件,我此前以为不含),以及包内另有 177 个**构建产物**(admin/、web-server/dist/)
必须与工作树构建比 —— 只比源码文件是不够的。
新增 web-server/scripts/check-tracked-release.py(纯标准库,支持 .tar.gz / .zip):
对包内**每一个**文件按路径决定比较基准 —— 构建产物(admin/、web-server/dist/)比工作树
构建结果,其余文件比 `git show <tag>:<路径>`;任何内容不一致 / 包内多余(既不在 git 也不是
声明的构建产物)/ 构建产物在工作树缺失都会列出并以非 0 退出。`npm run release:check` 已注册。
实测(**已发布**资产重新下载后跑):
包内 356 个文件:源码/文档 179(与 tag v0.7.5 比)+ 构建产物 177(与工作树构建比)
✓ 逐文件一致:0 处不一致 / 0 处多余 / 0 处缺失
反向验证:篡改 README.md 一个字节 + 塞入 web-server/EXTRA.txt →
✗ 内容不一致 1 处(README.md)、✗ 包内多余 1 处(EXTRA.txt),退出码 1。
顺带修掉脚本自身一个路径映射缺陷:BUILD_OUTPUTS 的键若是不带 / 的**精确文件名**
(Windows/Android 的单文件产物),原实现会把剩余路径拼成 ".../OpenDance.exe/"
导致「工作树缺失」误报;现在区分「目录前缀」与「精确文件名」两种键。
注:accept-release.sh 的接入只在下一个版本的产物里生效(本仓 accept-release.sh 本身
也在发布包内,v0.7.5 已发布);对已发布的 v0.7.5 包仍可用 `npm run release:check -- <包> --tag v0.7.5`
逐文件核对(已跑通)。同时已把同一脚本复制到 opendance-windows / opendance-android 并接入
两端的 accept-release.sh。
2026-09-18 03:10:05 +08:00
..
2026-09-18 03:10:05 +08:00
2026-09-17 04:44:30 +08:00
2026-09-14 19:00:55 +08:00
2026-09-14 19:00:55 +08:00
2026-09-18 03:10:05 +08:00
2026-09-17 01:49:52 +08:00
2026-09-17 03:24:56 +08:00
2026-09-17 05:51:26 +08:00
2026-09-15 20:37:53 +08:00
2026-09-15 08:47:37 +08:00
2026-09-14 19:00:55 +08:00
2026-09-15 21:18:15 +08:00