6.3 KiB
6.3 KiB
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.js200。 - 部署后 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 密钥路径和权限检查
- 两个隔离 worktree 分别执行
- 结果:修正首次构建编排后,目标和回退的全量测试、vet、静态构建全部通过;生产备份、 哈希、切换和全部健康检查通过,未触发自动回退。
- 没验证到的部分:未使用生产账号登录后人工导入 2026-08-15 Excel、匹配或回写真实
顺运宝商品;未执行真实同步、AI 匹配、采集、采购或 Client 下单;未实际触发回退,只验证
回退 release、哈希和自动回退路径。没有连接独立 MySQL 8.4
_test库执行并发导入。
遗留问题
顺运宝是否原样保存逗号连接的多个入库码,仍需用户在生产页面选择测试订单执行一次真实回写 后验收。若远端拒绝或改写该值,现有写后复读会把记录置为“需核对”,不会自动重试。
相关提交
17c2d45:本次生产目标代码基线。5d72141:本次 schema v24 兼容快速回退代码基线。