Files
cmautobuy/docs/task/241-admin部署最新版本17c2d45.md
T
2026-08-15 14:46:44 +08:00

99 lines
6.3 KiB
Markdown
Raw 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.
# 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 兼容快速回退代码基线。