Files
cmautobuy/docs/task/228-admin部署最新版本4d6ee8c.md

5.5 KiB
Raw Permalink Blame History

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、静态资源标识检查
  • 结果:所有自动化测试、构建、备份、发布和健康检查通过,未触发自动回退。
  • 没验证到的部分:未使用生产账号登录后人工操作 AI 设置或批量 AI 匹配;未实际创建 AI 匹配、采集或采购任务,未执行 Client 真机下单或付款;未实际触发回退,只验证了回退 release、哈希和自动回退路径。

遗留问题

旧 release a14c2bf 不兼容当前 schema v22,不能作为普通应用回退目标。需要快速回退时使用 /opt/cmautobuy/releases/557c996/cmautobuy-admin;只有需要恢复旧数据库结构时才同时恢复本次数据库备份,该操作会覆盖备份时间之后的业务数据。

相关提交

  • 4d6ee8c:本次生产目标代码基线。
  • 557c996:本次 schema v22 兼容快速回退代码基线。