docs: 归档生产部署 #241
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# 241 Admin:打包部署最新版本 17c2d45 到生产服务器
|
||||
|
||||
- 类型:部署
|
||||
- 父级大工单:#14
|
||||
- 所属 MVP / 版本:#15 / Admin 生产部署
|
||||
- 状态:已完成,待用户验收
|
||||
- 日期:2026-08-15
|
||||
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/241>
|
||||
|
||||
## 背景与目标
|
||||
|
||||
生产 Admin 原来运行 `0208dc6`,生产数据库已经由本地最新代码升级到 schema v24,但线上
|
||||
尚未包含档口入库码完整闭环以及 #240 多件入库码聚合修复。本任务把固定提交 `17c2d45`
|
||||
打包部署到 `185.216.248.75`,继续通过 `https://buy.833729.com` 提供服务,同时准备同样
|
||||
支持 schema v24 的 `5d72141` 作为快速回退版本。
|
||||
|
||||
## 最终方案
|
||||
|
||||
- 在 Windows 系统临时目录建立目标 `17c2d45` 和回退 `5d72141` 的 detached worktree,
|
||||
与主工作区未提交的 Client 文件完全隔离。
|
||||
- 两个版本先以 Windows 原生目标执行固定 Go 1.23.0 全量测试和 vet,再仅对正式构建设置
|
||||
`GOOS=linux`、`GOARCH=amd64`、`CGO_ENABLED=0`,生成去除本地路径和调试符号的静态二进制。
|
||||
- 发布前两次核对运行中的 SYB 同步、AI 匹配和档口入库码 `applying` 均为 0,schema 为 v24。
|
||||
- 使用现有生产业务账号生成 `--no-tablespaces` 单事务逻辑备份,权限设为 `0600`,完成
|
||||
gzip、建表段和 SHA-256 校验;没有输出数据库密码。
|
||||
- 上传目标和回退二进制,核对本地、上传暂存和最终 release 哈希;两个 release 只保存
|
||||
二进制并复用稳定 `config.yaml`、`data` 软链接。AI 密钥继续位于 release 外的专用文件。
|
||||
- 停止 systemd 后原子切换稳定二进制链接。目标启动或本机登录页检查失败时,脚本会切换
|
||||
到 `5d72141` 并重启;本次目标正常启动,没有触发回退。
|
||||
- 部署过程未修改配置、密钥和数据库业务数据,未触发同步、匹配、回写、采集、采购、下单或付款。
|
||||
|
||||
首次本地构建编排把 `GOOS=linux` 提前设置到了 `go test`,Windows 无法执行生成的 Linux
|
||||
测试二进制,因此报 `%1 is not a valid Win32 application`。该结果未上传、未接触服务器;
|
||||
工单记录后已修正环境变量顺序并重新完整执行,代码测试和构建均通过。部署后综合检查脚本
|
||||
最后一个临时文件计数命令受 PowerShell CRLF 影响,使旧版 Linux `wc` 收到异常选项;此前
|
||||
所有关键检查均已通过,随后用独立命令确认上传暂存文件为 0。
|
||||
|
||||
## 改了哪些
|
||||
|
||||
- `/opt/cmautobuy/releases/17c2d45/`:新增并启用目标 Admin release。
|
||||
- `/opt/cmautobuy/releases/5d72141/`:新增 schema v24 兼容快速回退 release。
|
||||
- `/opt/cmautobuy/cmautobuy-admin`:从 `0208dc6` 原子切换到 `17c2d45`。
|
||||
- `/opt/cmautobuy/backups/autobuy-before-241-20260815T064227Z-notablespaces.sql.gz`:新增部署前生产备份。
|
||||
- `docs/task/241-admin部署最新版本17c2d45.md`:新增本次部署归档。
|
||||
|
||||
原 `0208dc6` release 继续保留。本地 detached worktree 已移除;两个已校验的 Linux 发布
|
||||
二进制暂时保留在系统临时目录 `cmautobuy-deploy-241/artifacts`,不在仓库中,也不包含配置或数据。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 目标和回退只来自固定提交,Go 1.23.0 测试、vet、Linux 构建通过 | 通过 |
|
||||
| 切换前 SYB、AI 和档口入库码回写运行数均为 0 | 通过(两次核对) |
|
||||
| 数据库备份权限、gzip、表段和哈希校验通过 | 通过:`0600`、31 个建表段 |
|
||||
| 本地、上传和最终 release 二进制 SHA-256 一致 | 通过 |
|
||||
| 当前 release 为 `17c2d45`,回退及原 release 保留 | 通过 |
|
||||
| systemd、监听、schema 和启动日志正常 | 通过:active/enabled、`127.0.0.1:18080`、v24 |
|
||||
| 本机和公网 HTTP/HTTPS、Nginx 和静态资源正常 | 通过 |
|
||||
| 新二进制包含 #240 聚合反馈标识 | 通过:`同业务键合并` 命中 1 次 |
|
||||
| 配置、AI 密钥和档口入库码现有数据保持 | 通过:稳定链接正常、密钥 `0600`、记录仍为 48 条 |
|
||||
|
||||
发布物与运行状态:
|
||||
|
||||
- 目标二进制:27,951,256 字节,SHA-256
|
||||
`bb3118e6055857f1f9aabf95381a8082a20d1c89d733a013853778b4eab443b8`。
|
||||
- 回退二进制:27,943,064 字节,SHA-256
|
||||
`ed034673a98b62d859124ffa66991fb94e6133d499885c9a12a9f39db823f664`。
|
||||
- 数据库备份:4,687,575 字节,SHA-256
|
||||
`fc18c62ad4e6eddf8dc46e4e9c7b0da55bf31615fbcf8af8ec2ab45ce3557972`。
|
||||
- 部署后进程 PID 为 26848;日志显示数据库就绪并监听 `127.0.0.1:18080`。
|
||||
- 本机根路径 303、登录页 200;公网根路径 303、登录页 200、`app.js` 200。
|
||||
- 部署后 schema v24,运行中的 SYB、AI、档口入库码回写均为 0,档口入库码记录仍为 48 条。
|
||||
- AI 密钥路径仍由进程环境提供,密钥文件属主为服务账号且权限为 `0600`;未读取或输出内容。
|
||||
|
||||
## 测试
|
||||
|
||||
- 执行的命令:
|
||||
- 两个隔离 worktree 分别执行 `GOTOOLCHAIN=go1.23.0 go test ./... -count=1` 和 `go vet ./...`
|
||||
- 两个版本分别执行 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags='-s -w'`
|
||||
- 生产运行态 SQL、`mysqldump --no-tablespaces --single-transaction`、`gzip -t`、`sha256sum`
|
||||
- `readlink`、`file`、`stat`、`systemctl`、`ss`、`nginx -t`、`journalctl`、本机和公网 `curl`
|
||||
- 二进制 UTF-8 字符串检查以及配置、数据、AI 密钥路径和权限检查
|
||||
- 结果:修正首次构建编排后,目标和回退的全量测试、vet、静态构建全部通过;生产备份、
|
||||
哈希、切换和全部健康检查通过,未触发自动回退。
|
||||
- **没验证到的部分**:未使用生产账号登录后人工导入 2026-08-15 Excel、匹配或回写真实
|
||||
顺运宝商品;未执行真实同步、AI 匹配、采集、采购或 Client 下单;未实际触发回退,只验证
|
||||
回退 release、哈希和自动回退路径。没有连接独立 MySQL 8.4 `_test` 库执行并发导入。
|
||||
|
||||
## 遗留问题
|
||||
|
||||
顺运宝是否原样保存逗号连接的多个入库码,仍需用户在生产页面选择测试订单执行一次真实回写
|
||||
后验收。若远端拒绝或改写该值,现有写后复读会把记录置为“需核对”,不会自动重试。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `17c2d45`:本次生产目标代码基线。
|
||||
- `5d72141`:本次 schema v24 兼容快速回退代码基线。
|
||||
Reference in New Issue
Block a user