docs: 归档生产部署任务 #218
This commit is contained in:
@@ -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 的快速回退代码基线。
|
||||
Reference in New Issue
Block a user