diff --git a/docs/task/195-admin部署最新版本a4556b4.md b/docs/task/195-admin部署最新版本a4556b4.md new file mode 100644 index 0000000..740b791 --- /dev/null +++ b/docs/task/195-admin部署最新版本a4556b4.md @@ -0,0 +1,66 @@ +# 195 Admin:部署最新版本 a4556b4 到生产服务器 + +- 工单号:#195 +- 标题:Admin:部署最新版本 a4556b4 到生产服务器 +- 类型:部署 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:待验收 +- 日期:2026-08-12 +- Gitea: + +## 背景与目标 + +把包含 #192、#193 的最新已提交 Admin 基线 `a4556b4` 部署到生产服务器, +通过 `https://buy.833729.com` 提供服务。生产部署前运行版本为 `6ea45b7`。 + +## 最终方案 + +- 主工作区存在其他未提交开发文件,因此从固定提交 `a4556b4` 建立 detached + 隔离工作树,用固定 Go 1.23.0 验证并构建 Linux amd64 静态二进制。 +- 部署前分三次确认生产数据库没有 `running` 状态的顺运宝同步,避免服务重启 + 主动中断业务任务。 +- 使用生产业务账号完成单事务逻辑备份,校验 gzip、SHA-256 和权限。 +- 上传到独立 release,核对本地与远端二进制哈希,复用稳定配置和数据软链接。 +- systemd 停止后原子切换稳定执行链接;启动或本机登录页探测失败时自动回退 + `6ea45b7`。 +- 本次没有数据库迁移,schema 保持 v13。 + +## 改了哪些文件 + +- 本地忽略的构建产物:`admin/.deploy/cmautobuy-admin-a4556b4`。 +- 生产发布目录:`/opt/cmautobuy/releases/a4556b4/`。 +- 稳定执行链接:`/opt/cmautobuy/cmautobuy-admin` 已指向本次 release。 +- 生产备份:`/opt/cmautobuy/backups/autobuy-before-195-20260812T102750Z.sql.gz`。 +- 本归档文档:`docs/task/195-admin部署最新版本a4556b4.md`。 + +## 验收结果 + +| 验收项 | 结果 | +|---|---| +| 构建严格来自固定提交,不含未提交文件 | 通过:隔离 detached worktree | +| 固定 Go 1.23.0 的 vet、test 和 Linux build | 通过 | +| 切换前没有运行中的顺运宝同步 | 通过:三次检查均为 0 | +| 数据库备份权限 600 且 gzip 校验通过 | 通过:5,275,275 字节 | +| 二进制本地与远端 SHA-256 一致 | 通过:`558a419d366b135bc86af937be1b4cf9ffee07ce00f1736fbbe3372441ec5c68` | +| 当前 release 和回退 release 正确 | 通过:当前 `a4556b4`,保留 `6ea45b7` | +| systemd、监听端口、schema 和日志正常 | 通过:active/enabled,`127.0.0.1:18080`,schema v13,错误计数 0 | +| 本机和公网健康检查 | 通过:根路径 303,登录页 200,公网登录页 200 | +| 未上传凭据,未执行真实同步、采集或采购 | 通过 | + +## 测试 + +- 执行命令:在提交 `a4556b4` 的隔离工作树使用 `GOTOOLCHAIN=go1.23.0` + 执行 `go vet ./...`、`go test ./... -count=1`,再使用 + `GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build`;生产执行同步状态查询、 + `mysqldump`、`gzip -t`、`sha256sum`、`systemctl`、`readlink`、`ss`、schema + 查询、`journalctl` 和 HTTP/HTTPS 健康检查。 +- 结果:全部 Admin Go 包通过;生产启动日志显示数据库就绪和 Admin 正常启动; + systemd active/enabled;本机和公网健康检查通过。 +- **未验证到的部分**:没有使用生产账号登录后逐页进行人工功能验收;没有执行 + 真实顺运宝同步、采集或采购任务。 + +## 相关提交 + +- `a4556b4`:本次生产部署代码基线。 +