docs: 归档生产部署任务 #218

This commit is contained in:
chengma
2026-08-13 15:11:53 +08:00
parent 5bf67647a4
commit d2cb2b6d1a
@@ -0,0 +1,80 @@
# 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-5bf6764`
- `admin/.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 健康检查。
- 结果:Admin 全部 Go 包通过;目标及回退二进制哈希一致;当前 release 为 `5bf6764`;
服务 active/enabled,schema v19,最近启动日志错误计数为 0;公网登录页返回 200。
- **没验证到的部分**:未使用生产账号登录后人工粘贴 Excel 多订单号并检查筛选结果;
未执行备份恢复演练;未发起真实顺运宝同步、采集、采购或 Android 下单。
## 遗留问题
原生产 release `e8c5293` 与当前 schema v19 不兼容,不能直接重启回退。应用快速回退必须
使用本次准备的 `2ebe6bf`。只有需要连数据库结构一起恢复时,才停机恢复本次备份并切回
`e8c5293`;该操作会覆盖备份时间点之后的生产变更。
## 相关提交
- `5bf6764`:本次生产目标代码基线。
- `2ebe6bf`:兼容 schema v19 的快速回退代码基线。