Files
cmautobuy/docs/task/218-admin部署最新版本5bf6764.md

81 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 的快速回退代码基线。