Files
cmautobuy/docs/task/128-admin重新打包部署最新版本.md
T
2026-08-11 08:52:55 +08:00

3.5 KiB
Raw Blame History

128 Admin:重新打包并增量部署最新版本到生产服务器

  • 类型:需求
  • 父级大工单:#76
  • 所属 MVP / 版本:#77 / 生产部署
  • 状态:已完成(待用户验收)
  • 日期:2026-08-11
  • Gitea 工单:#128

背景与目标

将 main 分支提交 9c67099 对应的最新 Admin 重新编译并增量部署到 buy.833729.com,保留生产数据、顺运宝配置和可追溯的数据库备份。

最终方案

  1. 使用 Go 1.23 完成测试、静态检查和 Linux amd64 构建;发布文件 SHA256 为 d2abfa824acea53ee0d572446d5c014f97926db291e1767026f82c87bb5100ca。
  2. 部署前备份生产 autobuy 数据库,并验证 gzip 文件可读取;备份位于 /opt/cmautobuy/backups/autobuy-before-9c67099-20260811T084419.sql.gz。
  3. 上传到独立发布目录 /opt/cmautobuy/releases/9c67099,复用稳定的 config.yaml 和 data 目录软链接,再原子切换服务入口。
  4. 首次切换发现发布目录缺少 data 软链接,自动回切后补齐。再次启动发现生产库 已记录 schema v6,但缺少 v6 要求的 fk_tasks_created_by 外键。确认字段、索引均 正确且不存在孤立创建人数据后,补齐外键并重新启动。
  5. 原计划可直接回切旧版本 3600d0c,实际验证发现旧版本只支持到 schema v5, 无法在 v6 数据库上启动。因此应用回退必须使用兼容 v6 的构建;数据库级回退使用 本次部署前备份。该差异已记录到工单。

改了哪些

  • /opt/cmautobuy/releases/9c67099/:新增生产发布目录、Admin 二进制及稳定配置/数据软链接。
  • /opt/cmautobuy/cmautobuy-admin:切换到新版本二进制。
  • 生产 MySQL tasks 表:补齐 v6 已定义但线上缺失的 fk_tasks_created_by 外键;未改业务数据。
  • docs/task/128-admin重新打包部署最新版本.md:记录部署、故障恢复与验收结果。

验收结果

验收标准 结果
Go 1.23 测试、静态检查和构建通过 通过
部署前数据库备份完成且压缩包可读取 通过
服务器运行提交 9c67099 对应的新二进制 通过
schema v6 字段、外键和复合索引符合代码自检 通过
Admin 仅监听 127.0.0.1:18080 通过
https://buy.833729.com/ 跳转登录页,登录页返回 HTTP 200 通过
Admin、MySQL、Nginx 及同机相关服务保持 active 通过
当前 Admin 进程启动后无迁移、自检、panic 或 fatal 错误 通过

测试

  • 执行的命令:GOTOOLCHAIN=go1.23.0 go test ./... -count=1、 GOTOOLCHAIN=go1.23.0 go vet ./...、GOTOOLCHAIN=go1.23.0 go build ./...; 服务器端执行 systemd 状态、进程路径、端口、MySQL information_schema、日志和 HTTP 健康检查;本地通过 HTTPS 域名检查公网入口。
  • 结果:全部通过。服务进程稳定运行,/ 返回 303 并跳转 /login,/login 返回 200,当前进程日志显示“数据库已就绪”和“Admin 已启动”。
  • 没验证到的部分:未使用生产账号登录后逐页执行人工业务回归;未执行数据库备份恢复演练。

遗留问题(选填)

  • 旧发布 3600d0c 不兼容 schema v6,不能作为当前数据库的应用回退版本。后续部署应 保留至少一个兼容当前 schema 的上一版构建。

相关提交

  • 9c67099 本次构建和部署的代码基线
  • a9f22b9 按创建人隔离采集采购任务(#127)