5.5 KiB
5.5 KiB
228 Admin:打包部署最新版本 4d6ee8c 到生产服务器
- 类型:部署
- 父级大工单:#14
- 所属 MVP / 版本:#15 / Admin 生产部署
- 状态:已完成
- 日期:2026-08-14
- Gitea 工单:#228
背景与目标
生产服务此前仍运行提交 a14c2bf,本地最新已提交基线为 4d6ee8c。本次把包含 AI 服务商配置、AI 规格候选匹配、SYB 批量 AI 匹配、AI HTTP 兼容及后续数据维护代码的最新 Admin 发布到 185.216.248.75,继续通过 https://buy.833729.com 提供服务。
生产数据库已是 schema v22,旧生产二进制 a14c2bf 不再适合作为重启回退版本,因此同时准备支持 v22 的 557c996 作为快速回退 release。
最终方案
- 在系统临时目录分别建立
4d6ee8c和557c996的 detached worktree,构建过程与主工作区未提交的 Client 文件完全隔离。 - 两个版本均使用固定 Go 1.23.0 完成全量测试、静态检查和 Linux amd64 静态构建。
- 发布前连续三次、切换前再一次确认运行中的 SYB 同步和 AI 匹配批次均为 0。
- 使用生产业务账号生成
--no-tablespaces单事务逻辑备份,设置权限为0600,完成 gzip、表数量和 SHA-256 校验。 - 上传目标和回退二进制,核对本地、暂存和最终 release 的 SHA-256;两个 release 均复用稳定配置和数据软链接。
- 停止 systemd 后原子切换稳定二进制链接。目标版本启动或本机登录页探测失败时,部署脚本自动切换到
557c996;本次目标版本健康检查通过,未触发回退。 - 部署后核对 release、进程、监听、schema、运行中批次、AI 配置、启动日志、本机及公网 HTTP 和最新静态资源。
- 未修改生产配置、AI 密钥、数据库业务数据或任务状态,未触发同步、AI 匹配、采集、采购、下单或付款。
改了哪些
/opt/cmautobuy/releases/4d6ee8c/:新增并启用目标 release。/opt/cmautobuy/releases/557c996/:新增 schema v22 兼容快速回退 release。/opt/cmautobuy/cmautobuy-admin:稳定链接从a14c2bf原子切换到4d6ee8c。/opt/cmautobuy/backups/autobuy-before-228-20260814T092057Z-notablespaces.sql.gz:新增部署前完整业务库备份。docs/task/228-admin部署最新版本4d6ee8c.md:新增本次部署归档。
上传暂存区、两个本地 detached worktree 和临时构建二进制已经清理;目标、回退 release、旧 release 和数据库备份保留。
验收结果
| 验收标准 | 结果 |
|---|---|
发布包只来自固定提交 4d6ee8c,不包含主工作区未提交文件 |
通过 |
| 目标和回退版本通过固定 Go 1.23.0 测试、vet 与 Linux amd64 构建 | 通过 |
| 发布前无运行中 SYB 同步或 AI 批次,数据库备份可读取 | 通过:四次均为 0;备份权限 0600,gzip 校验通过 |
| 本地、上传和 release 二进制 SHA-256 一致 | 通过 |
稳定链接指向 4d6ee8c,旧版本与 v22 回退版均保留 |
通过 |
| systemd、监听、schema 和启动日志正常 | 通过:active/enabled,监听 127.0.0.1:18080,schema v22 |
| 本机和公网 HTTP、最新 AI 静态资源正常 | 通过 |
| 未修改凭据和业务数据,未触发真实业务动作 | 通过 |
发布物与备份:
- 目标二进制:27,730,072 字节,SHA-256
446e5903ec7768684bf30fcfdd9f0b46530b68d505ab23360f7b2c08d0ff3d5f。 - 回退二进制:27,730,072 字节,SHA-256
4f28d42a28bcc4c3ff0085303e754f108f2136928bf1e4ae8767b8076a9cd4b0。 - 数据库备份:4,676,057 字节、30 个建表段,SHA-256
689ce015cfd5b28fda36f58eae17f68b638db70340be36665e6aaf443e41656e。 - 部署后服务 PID 为 3898,启动时间为 2026-08-14 17:22:53(UTC+8)。
- 本机根路径返回 303、登录页返回 200;公网根路径返回 303、登录页返回 200、未登录访问 AI 设置返回 303。
- 公网
app.js已包含setupAIMatchCreate,本机 CSS 已包含 AI 匹配进度弹窗标识。 - schema 仍为 v22;运行中的 SYB 同步和 AI 批次均为 0;已启用的
gpt-5.5配置仍保持连接测试成功。 - 新进程启动后 Client 领取轮询继续返回 204。
测试
- 执行的命令:
- 两个隔离 worktree 分别运行
GOTOOLCHAIN=go1.23.0 go test ./... -count=1和go vet ./... - 两个版本分别运行
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' - 生产运行态检查、
mysqldump --no-tablespaces、gzip -t、SHA-256、release 安装和原子切换 systemctl、ss、schema 与运行中批次 SQL、journalctl、本机及公网 HTTP、静态资源标识检查
- 两个隔离 worktree 分别运行
- 结果:所有自动化测试、构建、备份、发布和健康检查通过,未触发自动回退。
- 没验证到的部分:未使用生产账号登录后人工操作 AI 设置或批量 AI 匹配;未实际创建 AI 匹配、采集或采购任务,未执行 Client 真机下单或付款;未实际触发回退,只验证了回退 release、哈希和自动回退路径。
遗留问题
旧 release a14c2bf 不兼容当前 schema v22,不能作为普通应用回退目标。需要快速回退时使用 /opt/cmautobuy/releases/557c996/cmautobuy-admin;只有需要恢复旧数据库结构时才同时恢复本次数据库备份,该操作会覆盖备份时间之后的业务数据。
相关提交
4d6ee8c:本次生产目标代码基线。557c996:本次 schema v22 兼容快速回退代码基线。