Files
cmautobuy/docs/task/249-admin部署统一搜索清除按钮版本.md
T
2026-08-15 18:00:21 +08:00

4.6 KiB
Raw Blame History

249 Admin:部署统一搜索清除按钮版本到生产服务器

  • 类型:部署
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / Admin 生产部署
  • 状态:已完成,待用户验收
  • 日期:2026-08-15
  • Gitea 工单:#249

背景与目标

生产 Admin 原来运行 7736ab7,尚未包含 #248 的列表搜索清除按钮。本任务把固定提交 d79e5c4 隔离构建并发布到 185.216.248.75,继续通过 https://buy.833729.com 提供服务。

最终方案

  • 在 Windows 系统临时目录建立 d79e5c4 detached worktree,与主工作区未提交的 Client 文件隔离。第一次验证命令误在仓库根目录执行,Go 在编译前即因找不到模块退出; 随后改到隔离工作树的 admin/ 目录,使用固定 Go 1.23.0 完成 vet、全量构建、全量测试 和 Linux amd64 静态构建。
  • 上传后核对本地、暂存和最终 release 的 SHA-256、文件大小和 ELF 类型;正式 release 继续链接 /opt/cmautobuy/config.yaml 和 /opt/cmautobuy/data,没有复制或输出凭据。
  • 部署前确认生产仍运行 7736ab7,MySQL 8.4.8、schema v25,SYB 同步、AI 匹配、 档口入库码排队/回写均为 0。目标二进制先在不对公网开放的 127.0.0.1:18081 使用生产环境启动,数据库自检和登录页检查通过后才进入切换。
  • 再次确认后台任务为 0,停止 systemd 后原子切换稳定二进制链接并启动。发布后核对 release 哈希、5 个清除入口模板标识、schema、后台任务、systemd、监听、Nginx、 本机和公网 HTTPS。
  • 本次代码不包含 schema 变化,也不主动写业务数据,因此没有额外生成数据库备份。 前一 release 7736ab7 同样支持 v25,发生启动或页面健康检查失败时可以只回切应用。
  • 部署过程没有触发顺运宝同步、档口入库码匹配/回写、AI 匹配、采集、采购、下单或付款。

改了哪些

  • /opt/cmautobuy/releases/d79e5c4/:新增并启用目标 Admin release。
  • /opt/cmautobuy/cmautobuy-admin:稳定链接从 7736ab7 原子切换到 d79e5c4。
  • docs/task/249-admin部署统一搜索清除按钮版本.md:新增本次部署归档。

前一 7736ab7 release 继续保留,可在不恢复数据库的情况下回切。服务器上传暂存文件和 预检日志已删除,本地 detached worktree 已移除。已校验的 Linux 二进制暂时保留在系统 临时目录 cmautobuy-deploy-249-20260815-175451/artifacts,不在仓库中且不含配置或数据。

验收结果

验收标准 结果
发布物只来自固定提交 d79e5c4,固定 Go 1.23.0 验证通过 通过
切换前 SYB、AI 和档口入库码活动任务均为 0 通过(两次核对)
本地、上传暂存和最终 release 哈希一致 通过
systemd active/enabled,只监听 127.0.0.1:18080 通过
schema 保持 v25,未执行数据库迁移或业务写入 通过
本机、公网页面及目标模板标识正常 通过
配置、密钥和业务数据保持,未触发真实业务动作 通过

发布结果:

  • 目标二进制:28,012,696 字节,SHA-256 0c550bda3d6baf04a190877a2a4a22ad2c3ec55a7d6922dc43d8e9f25c05567d。
  • 新服务 PID 为 31437,启动时间 2026-08-15 17:58:09 CST;启动日志中的数据库 就绪标识存在,fatal、panic 和迁移错误均为 0。
  • MySQL 服务端为 8.4.8,schema 为 v25;发布后的 SYB、AI 和档口入库码活动任务均为 0。
  • 本机根路径 303、登录页 200;公网根路径 303、登录页 200;Nginx 配置检查通过。
  • 发布物中蝦皮、PDD、采集采购、客户端和用户管理的 5 个清除链接标识全部存在。

测试

  • 执行的命令:
    • 隔离 worktree:GOTOOLCHAIN=go1.23.0 go vet ./...、go build ./...、 go test ./... -count=1
    • GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags='-s -w'
    • 上传前后 sha256sum、stat、file
    • 独立端口生产环境启动预检、生产运行态只读 SQL
    • readlink、systemctl、ss、nginx -t、journalctl、本机和公网 curl
    • 在最终二进制中核对 5 个清除入口模板标识
  • 结果:固定 Go 1.23.0 验证、静态构建、启动预检、切换及全部发布后检查通过。
  • 没验证到的部分:未使用生产账号登录后逐个点击 5 个清除入口;未触发真实同步、 AI 匹配、档口入库码匹配/回写、采集、采购、下单或付款;未实际执行应用回切。

相关提交

  • d79e5c4:本次生产目标代码基线。