diff --git a/docs/task/220-部署顺运宝工具条压缩版本.md b/docs/task/220-部署顺运宝工具条压缩版本.md new file mode 100644 index 0000000..0e27d8e --- /dev/null +++ b/docs/task/220-部署顺运宝工具条压缩版本.md @@ -0,0 +1,56 @@ +# #220 Admin:部署顺运宝工具条压缩版本到生产服务器 + +- 类型:需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / Admin MVP 后续优化 +- 状态:已完成 +- 日期:2026-08-13 +- Gitea 工单: + +## 背景与目标 + +把 #219 已完成的顺运宝工具条压缩版本部署到生产服务器,使公网 Admin 使用固定提交 `a14c2bf` 对应的代码,同时保留发布前版本和数据库备份以便回退。 + +## 最终方案 + +- 在仓库外使用提交 `a14c2bf` 的 detached worktree 构建,隔离主工作区已有且与本次无关的改动。 +- 使用 Go 1.23.0 完成全量构建、测试和静态检查,再交叉编译 Linux amd64 发布物。 +- 发布前连续三次确认没有运行中的顺运宝同步;schema 确认为 v19,并生成经过 gzip 和 SHA-256 校验的 MySQL 备份。 +- 将发布物安装到独立目录 `/opt/cmautobuy/releases/a14c2bf/`,核对本地、上传文件和安装文件 SHA-256 后,原子切换稳定二进制链接并重启服务。 +- 新版本健康检查失败时,部署脚本会把稳定链接切回部署前 release;本次健康检查通过,没有触发回退。 +- 未修改生产配置、凭据和数据库结构,也未触发任何同步、采集或采购业务操作。 + +## 改了哪些 + +- 生产 release:`/opt/cmautobuy/releases/a14c2bf/cmautobuy-admin`。 +- 稳定二进制链接:`/opt/cmautobuy/cmautobuy-admin` 已切换到上述 release。 +- 发布前 release:`/opt/cmautobuy/releases/5bf6764/cmautobuy-admin`,继续保留用于回退。 +- 数据库备份:`/opt/cmautobuy/backups/autobuy-before-220-20260813T073351Z.sql.gz`,权限为仅管理员可读写。 +- 本地未修改 Admin 业务代码;部署脚本为临时文件,执行完成后已清理。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 发布物只来自固定提交 `a14c2bf`,Go 1.23.0 构建、测试和 vet 全部通过 | 通过 | +| 发布前没有运行中的 SYB 同步,并生成可读取、可校验的数据库备份 | 通过:连续三次均为 0,备份 gzip 与 SHA-256 校验通过 | +| 远端发布物 SHA-256 与本地一致,稳定链接指向新的独立 release | 通过:SHA-256 为 `cf60221ce00462cf0fedcaf24c1491275a22165bd81e63d5cc30fdfe4975332d` | +| Admin 服务 active/enabled,schema 仍为 v19 | 通过 | +| 本机和公网 HTTP、18080 监听正常 | 通过:根路径 303,登录页 200,端口正常监听 | +| 线上 CSS 包含本次顺运宝紧凑布局标识 | 通过:包含 `.syb-toolbar` 和 `.syb-date-separator` | +| 部署前 release 保留且可以回退 | 通过 | + +## 测试 + +- 执行的命令: + - `$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test ./... -count=1; go vet ./...` + - Linux amd64、`CGO_ENABLED=0` 的固定提交交叉编译。 + - 生产侧检查 systemd 状态、release 链接、SHA-256、schema、SYB 同步运行数、18080 监听、本机 HTTP 与启动日志。 + - 公网检查 `https://buy.833729.com/`、`https://buy.833729.com/login` 和 `/static/css/app.css`。 +- 结果:全量检查和生产健康检查全部通过;新 release 已生效,启动错误计数为 0。 +- **没验证到的部分**:未使用生产账号登录后手工操作顺运宝页面,也未触发真实同步、采集或采购;未实际执行回退,已保留旧 release 并验证自动回退路径所需目标存在。 + +## 相关提交 + +- `a14c2bf` `docs: 归档任务 #219`(本次固定发布提交) +- `1ba5c88` `style: 压缩顺运宝工具条 (#219)`