3.5 KiB
3.5 KiB
128 Admin:重新打包并增量部署最新版本到生产服务器
- 类型:需求
- 父级大工单:#76
- 所属 MVP / 版本:#77 / 生产部署
- 状态:已完成,用户验收通过
- 日期:2026-08-11
- Gitea 工单:#128
背景与目标
将 main 分支提交 9c67099 对应的最新 Admin 重新编译并增量部署到
buy.833729.com,保留生产数据、顺运宝配置和可追溯的数据库备份。
最终方案
- 使用 Go 1.23 完成测试、静态检查和 Linux amd64 构建;发布文件 SHA256 为
d2abfa824acea53ee0d572446d5c014f97926db291e1767026f82c87bb5100ca。 - 部署前备份生产
autobuy数据库,并验证 gzip 文件可读取;备份位于/opt/cmautobuy/backups/autobuy-before-9c67099-20260811T084419.sql.gz。 - 上传到独立发布目录
/opt/cmautobuy/releases/9c67099,复用稳定的config.yaml和data目录软链接,再原子切换服务入口。 - 首次切换发现发布目录缺少
data软链接,自动回切后补齐。再次启动发现生产库 已记录 schema v6,但缺少 v6 要求的fk_tasks_created_by外键。确认字段、索引均 正确且不存在孤立创建人数据后,补齐外键并重新启动。 - 原计划可直接回切旧版本
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 状态、进程路径、端口、MySQLinformation_schema、日志和 HTTP 健康检查;本地通过 HTTPS 域名检查公网入口。 - 结果:全部通过。服务进程稳定运行,
/返回 303 并跳转/login,/login返回 200,当前进程日志显示“数据库已就绪”和“Admin 已启动”。 - 没验证到的部分:未使用生产账号登录后逐页执行人工业务回归;未执行数据库备份恢复演练。
遗留问题(选填)
- 旧发布
3600d0c不兼容 schema v6,不能作为当前数据库的应用回退版本。后续部署应 保留至少一个兼容当前 schema 的上一版构建。
相关提交
9c67099本次构建和部署的代码基线a9f22b9按创建人隔离采集采购任务(#127)