4.6 KiB
4.6 KiB
218 Admin:打包部署最新版本 5bf6764 到生产服务器
- 工单号:#218
- 标题:Admin:打包部署最新版本
5bf6764到生产服务器 - 类型:部署
- 父级大工单:#14
- 所属 MVP / 版本:#15 / Admin MVP 后续优化
- 状态:已完成
- 日期:2026-08-13
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/218
背景与目标
把包含顺运宝多订单号精确搜索及此前已提交 Admin 变更的最新基线 5bf6764 打包并
部署到生产服务器,通过 https://buy.833729.com 提供服务。发布需要保留生产配置、
数据、发布前备份及与当前数据库结构兼容的快速回退能力。
最终方案
- 主工作区有其他未提交文件,因此分别从固定提交
5bf6764和2ebe6bf建立 detached 隔离工作树。两者均使用 Go 1.23.0 完成测试、静态检查和 Linux amd64 静态构建。 - 生产预检确认当前进程仍运行
e8c5293,但数据库已经是 schema v19。e8c5293只支持到 v14,重启后无法作为回退版本,因此额外上传 #217 之前、兼容 v19 的2ebe6bf作为快速回退 release。 - 发布前连续三次确认没有
running状态的顺运宝同步。使用生产业务账号完成单事务 逻辑备份,权限设为 600,并通过 gzip 和 SHA-256 校验。 - 上传目标及回退二进制,核对本地与远端 SHA-256;两个 release 都复用稳定的
config.yaml和data软链接。 - 切换前再次确认没有运行中同步,停止 systemd 后原子切换稳定执行链接。目标版本启动
或本机登录页探测失败时,部署脚本会自动切到
2ebe6bf并重启。 - 生产 schema 在部署前已是 v19,因此本次启动没有新增数据库迁移。
改了哪些
- 本地忽略构建产物:
admin/.deploy/cmautobuy-admin-5bf6764admin/.deploy/cmautobuy-admin-2ebe6bf
- 生产目标发布:
/opt/cmautobuy/releases/5bf6764/。 - 生产快速回退发布:
/opt/cmautobuy/releases/2ebe6bf/。 - 稳定执行链接:
/opt/cmautobuy/cmautobuy-admin已指向目标 release。 - 生产备份:
/opt/cmautobuy/backups/autobuy-before-218-20260813T070906Z.sql.gz。 - 本归档文档:
docs/task/218-admin部署最新版本5bf6764.md。
验收结果
| 验收标准 | 结果 |
|---|---|
| 构建只来自固定提交,不包含主工作区未提交文件 | 通过:两个 detached 隔离工作树 |
| Go 1.23.0 测试、vet 和 Linux amd64 构建 | 通过 |
| 发布前没有运行中的顺运宝同步 | 通过:切换前共四次检查均为 0 |
| 数据库备份权限 600,gzip 和 SHA-256 校验通过 | 通过:4,489,066 字节 |
| 目标二进制本地与远端 SHA-256 一致 | 通过:49ba578d74c46084f913b7d2eefc5d4aa7ff897eb53466bf6026ecf50f2ae07f |
| schema v19 兼容的快速回退版本就绪 | 通过:2ebe6bf,SHA-256 8d32d01f2d20e4e8cfeebacc5a027e07720b8582dacd1534cc1cb449725bee17 |
| systemd、监听、schema 和启动日志正常 | 通过:active/enabled,127.0.0.1:18080,schema v19,错误计数 0 |
| 本机和公网健康检查通过 | 通过:本机根路径 303、登录页 200,公网根路径 303、登录页 200 |
| 公网静态资源来自最新版本 | 通过:CSS 包含 syb-order-search-input 标记 |
| 未输出凭据,未触发同步、采集、采购或下单 | 通过 |
测试
- 执行的命令:
- 两个隔离工作树分别使用 Go 1.23.0 执行
go test ./... -count=1、go vet ./...。 - 使用
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w"构建。 - 生产执行同步状态查询、
mysqldump、gzip -t、sha256sum、systemctl、readlink、ss、schema 查询、journalctl及 HTTP/HTTPS 健康检查。
- 两个隔离工作树分别使用 Go 1.23.0 执行
- 结果:Admin 全部 Go 包通过;目标及回退二进制哈希一致;当前 release 为
5bf6764; 服务 active/enabled,schema v19,最近启动日志错误计数为 0;公网登录页返回 200。 - 没验证到的部分:未使用生产账号登录后人工粘贴 Excel 多订单号并检查筛选结果; 未执行备份恢复演练;未发起真实顺运宝同步、采集、采购或 Android 下单。
遗留问题
原生产 release e8c5293 与当前 schema v19 不兼容,不能直接重启回退。应用快速回退必须
使用本次准备的 2ebe6bf。只有需要连数据库结构一起恢复时,才停机恢复本次备份并切回
e8c5293;该操作会覆盖备份时间点之后的生产变更。
相关提交
5bf6764:本次生产目标代码基线。2ebe6bf:兼容 schema v19 的快速回退代码基线。