Files
cmautobuy/docs/task/218-admin部署最新版本5bf6764.md
T

4.6 KiB
Raw Blame History

218 Admin:打包部署最新版本 5bf6764 到生产服务器

背景与目标

把包含顺运宝多订单号精确搜索及此前已提交 Admin 变更的最新基线 5bf6764 打包并 部署到生产服务器,通过 https://buy.833729.com 提供服务。发布需要保留生产配置、 数据、发布前备份及与当前数据库结构兼容的快速回退能力。

最终方案

  • 主工作区有其他未提交文件,因此分别从固定提交 5bf6764 和 2ebe6bf 建立 detached 隔离工作树。两者均使用 Go 1.23.0 完成测试、静态检查和 Linux amd64 静态构建。
  • 生产预检确认当前进程仍运行 e8c5293,但数据库已经是 schema v19。e8c5293 只支持到 v14,重启后无法作为回退版本,因此额外上传 #217 之前、兼容 v19 的 2ebe6bf 作为快速回退 release。
  • 发布前连续三次确认没有 running 状态的顺运宝同步。使用生产业务账号完成单事务 逻辑备份,权限设为 600,并通过 gzip 和 SHA-256 校验。
  • 上传目标及回退二进制,核对本地与远端 SHA-256;两个 release 都复用稳定的 config.yaml 和 data 软链接。
  • 切换前再次确认没有运行中同步,停止 systemd 后原子切换稳定执行链接。目标版本启动 或本机登录页探测失败时,部署脚本会自动切到 2ebe6bf 并重启。
  • 生产 schema 在部署前已是 v19,因此本次启动没有新增数据库迁移。

改了哪些

  • 本地忽略构建产物:
    • admin/.deploy/cmautobuy-admin-5bf6764
    • admin/.deploy/cmautobuy-admin-2ebe6bf
  • 生产目标发布:/opt/cmautobuy/releases/5bf6764/。
  • 生产快速回退发布:/opt/cmautobuy/releases/2ebe6bf/。
  • 稳定执行链接:/opt/cmautobuy/cmautobuy-admin 已指向目标 release。
  • 生产备份:/opt/cmautobuy/backups/autobuy-before-218-20260813T070906Z.sql.gz。
  • 本归档文档:docs/task/218-admin部署最新版本5bf6764.md。

验收结果

验收标准 结果
构建只来自固定提交,不包含主工作区未提交文件 通过:两个 detached 隔离工作树
Go 1.23.0 测试、vet 和 Linux amd64 构建 通过
发布前没有运行中的顺运宝同步 通过:切换前共四次检查均为 0
数据库备份权限 600,gzip 和 SHA-256 校验通过 通过:4,489,066 字节
目标二进制本地与远端 SHA-256 一致 通过:49ba578d74c46084f913b7d2eefc5d4aa7ff897eb53466bf6026ecf50f2ae07f
schema v19 兼容的快速回退版本就绪 通过:2ebe6bf,SHA-256 8d32d01f2d20e4e8cfeebacc5a027e07720b8582dacd1534cc1cb449725bee17
systemd、监听、schema 和启动日志正常 通过:active/enabled,127.0.0.1:18080,schema v19,错误计数 0
本机和公网健康检查通过 通过:本机根路径 303、登录页 200,公网根路径 303、登录页 200
公网静态资源来自最新版本 通过:CSS 包含 syb-order-search-input 标记
未输出凭据,未触发同步、采集、采购或下单 通过

测试

  • 执行的命令:
    • 两个隔离工作树分别使用 Go 1.23.0 执行 go test ./... -count=1、go vet ./...。
    • 使用 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" 构建。
    • 生产执行同步状态查询、mysqldump、gzip -t、sha256sum、systemctl、 readlink、ss、schema 查询、journalctl 及 HTTP/HTTPS 健康检查。
  • 结果:Admin 全部 Go 包通过;目标及回退二进制哈希一致;当前 release 为 5bf6764; 服务 active/enabled,schema v19,最近启动日志错误计数为 0;公网登录页返回 200。
  • 没验证到的部分:未使用生产账号登录后人工粘贴 Excel 多订单号并检查筛选结果; 未执行备份恢复演练;未发起真实顺运宝同步、采集、采购或 Android 下单。

遗留问题

原生产 release e8c5293 与当前 schema v19 不兼容,不能直接重启回退。应用快速回退必须 使用本次准备的 2ebe6bf。只有需要连数据库结构一起恢复时,才停机恢复本次备份并切回 e8c5293;该操作会覆盖备份时间点之后的生产变更。

相关提交

  • 5bf6764:本次生产目标代码基线。
  • 2ebe6bf:兼容 schema v19 的快速回退代码基线。