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

Closed
opened 2026-08-13 15:03:10 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:部署
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / Admin MVP 后续优化
  • 阶段:生产发布

要解决什么

将当前 main 已提交的最新 Admin 基线 5bf6764 打包并更新到生产服务器,通过 https://buy.833729.com 提供服务,同时保留生产配置、数据、部署前备份和可回退的上一发布。

做什么 / 不做什么

  • 做:从固定提交 5bf6764 的隔离工作树使用 Go 1.23.0 验证并构建 Linux amd64 静态二进制。
  • 做:发布前确认没有运行中的顺运宝同步,完成可校验的 MySQL 逻辑备份。
  • 做:上传独立 release,核对 SHA-256,复用稳定配置和 data 路径,原子切换 systemd,失败时回退。
  • 做:验证 systemd、端口、schema、日志、本机 HTTP 和公网 HTTPS。
  • 不做:不执行真实顺运宝同步,不创建采集/采购任务,不触发真实下单,不包含未提交的 Client 及其他工作区文件。

怎么做

  • 先只读核对当前 release、schema、运行中同步和回退目标。
  • 在 detached 隔离工作树中执行 go test ./... -count=1、go vet ./... 和 Linux amd64 构建。
  • 生产备份设为权限 600,通过 gzip -t 和 SHA-256 校验。
  • 新 release 准备完整后再短暂停止服务并切换;启动或健康检查失败时恢复原执行路径。
  • 部署结果记录到工单和 docs/task/218-*.md。

验收标准

  • 构建产物只来自固定提交 5bf6764,Go 1.23.0 的 test、vet 和 Linux build 通过。
  • 发布前无运行中顺运宝同步,备份权限 600 且 gzip/SHA-256 校验通过。
  • 本地和远端二进制 SHA-256 一致,当前 release 指向 5bf6764 且上一版可回退。
  • systemd active/enabled,监听端口、schema 和启动日志正常。
  • 服务器本机页面与 https://buy.833729.com/login 健康检查通过。
  • 不输出或上传凭据,不触发外部业务动作。

怎么验证

本地固定 Go 1.23.0 执行 test、vet 和 Linux build;服务器执行同步状态查询、备份校验、sha256sum、systemctl、readlink、ss、schema 查询、journalctl 和 HTTP/HTTPS 检查。

风险和回退

  • 服务切换会有短暂不可用;在 release 和备份就绪后才停服务缩短窗口。
  • 若新版启动或健康检查失败,原子恢复上一个与当前 schema 兼容的 release 并重启 systemd。
  • 如发生数据不兼容,停止服务后使用本次备份恢复;恢复会覆盖备份时点后变更,仅在必要时执行。

实施结果

  • 状态:已完成,待用户验收
  • 生产当前 release:/opt/cmautobuy/releases/5bf6764/cmautobuy-admin
  • 生产 schema:v19(部署前已是 v19,本次未新增迁移)
  • 快速回退 release:/opt/cmautobuy/releases/2ebe6bf/cmautobuy-admin
  • 部署前备份:/opt/cmautobuy/backups/autobuy-before-218-20260813T070906Z.sql.gz,4,489,066 字节,权限 600,gzip/SHA-256 校验通过
  • 目标 SHA-256:49ba578d74c46084f913b7d2eefc5d4aa7ff897eb53466bf6026ecf50f2ae07f
  • 回退 SHA-256:8d32d01f2d20e4e8cfeebacc5a027e07720b8582dacd1534cc1cb449725bee17
  • 服务状态:active/enabled,127.0.0.1:18080 监听,启动后错误日志计数 0
  • 健康检查:本机根路径 303、登录页 200;公网根路径 303、https://buy.833729.com/login 200
  • 最新资源校验:公网 CSS 已包含 syb-order-search-input
  • 归档文档:docs/task/218-admin部署最新版本5bf6764.md
  • 归档提交:d2cb2b6

验证结果

  • 目标和回退两个隔离工作树的 Go 1.23.0 go test ./... -count=1、go vet ./... 与 Linux amd64 静态构建通过。
  • 切换前共四次确认运行中 SYB 同步为 0;部署后仍为 0。
  • 未验证:未用生产账号手工粘贴 Excel 多订单号;未演练备份恢复;未触发真实同步、采集、采购或下单。
## 基本信息 - 类型:部署 - 父级大工单:#14 - 所属 MVP / 版本:#15 / Admin MVP 后续优化 - 阶段:生产发布 ## 要解决什么 将当前 `main` 已提交的最新 Admin 基线 `5bf6764` 打包并更新到生产服务器,通过 `https://buy.833729.com` 提供服务,同时保留生产配置、数据、部署前备份和可回退的上一发布。 ## 做什么 / 不做什么 - 做:从固定提交 `5bf6764` 的隔离工作树使用 Go 1.23.0 验证并构建 Linux amd64 静态二进制。 - 做:发布前确认没有运行中的顺运宝同步,完成可校验的 MySQL 逻辑备份。 - 做:上传独立 release,核对 SHA-256,复用稳定配置和 data 路径,原子切换 systemd,失败时回退。 - 做:验证 systemd、端口、schema、日志、本机 HTTP 和公网 HTTPS。 - 不做:不执行真实顺运宝同步,不创建采集/采购任务,不触发真实下单,不包含未提交的 Client 及其他工作区文件。 ## 怎么做 - 先只读核对当前 release、schema、运行中同步和回退目标。 - 在 detached 隔离工作树中执行 `go test ./... -count=1`、`go vet ./...` 和 Linux amd64 构建。 - 生产备份设为权限 600,通过 `gzip -t` 和 SHA-256 校验。 - 新 release 准备完整后再短暂停止服务并切换;启动或健康检查失败时恢复原执行路径。 - 部署结果记录到工单和 `docs/task/218-*.md`。 ## 验收标准 - [x] 构建产物只来自固定提交 `5bf6764`,Go 1.23.0 的 test、vet 和 Linux build 通过。 - [x] 发布前无运行中顺运宝同步,备份权限 600 且 gzip/SHA-256 校验通过。 - [x] 本地和远端二进制 SHA-256 一致,当前 release 指向 `5bf6764` 且上一版可回退。 - [x] systemd active/enabled,监听端口、schema 和启动日志正常。 - [x] 服务器本机页面与 `https://buy.833729.com/login` 健康检查通过。 - [x] 不输出或上传凭据,不触发外部业务动作。 ## 怎么验证 本地固定 Go 1.23.0 执行 test、vet 和 Linux build;服务器执行同步状态查询、备份校验、`sha256sum`、`systemctl`、`readlink`、`ss`、schema 查询、`journalctl` 和 HTTP/HTTPS 检查。 ## 风险和回退 - 服务切换会有短暂不可用;在 release 和备份就绪后才停服务缩短窗口。 - 若新版启动或健康检查失败,原子恢复上一个与当前 schema 兼容的 release 并重启 systemd。 - 如发生数据不兼容,停止服务后使用本次备份恢复;恢复会覆盖备份时点后变更,仅在必要时执行。 ## 实施结果 - 状态:已完成,待用户验收 - 生产当前 release:`/opt/cmautobuy/releases/5bf6764/cmautobuy-admin` - 生产 schema:v19(部署前已是 v19,本次未新增迁移) - 快速回退 release:`/opt/cmautobuy/releases/2ebe6bf/cmautobuy-admin` - 部署前备份:`/opt/cmautobuy/backups/autobuy-before-218-20260813T070906Z.sql.gz`,4,489,066 字节,权限 600,gzip/SHA-256 校验通过 - 目标 SHA-256:`49ba578d74c46084f913b7d2eefc5d4aa7ff897eb53466bf6026ecf50f2ae07f` - 回退 SHA-256:`8d32d01f2d20e4e8cfeebacc5a027e07720b8582dacd1534cc1cb449725bee17` - 服务状态:active/enabled,`127.0.0.1:18080` 监听,启动后错误日志计数 0 - 健康检查:本机根路径 303、登录页 200;公网根路径 303、`https://buy.833729.com/login` 200 - 最新资源校验:公网 CSS 已包含 `syb-order-search-input` - 归档文档:`docs/task/218-admin部署最新版本5bf6764.md` - 归档提交:`d2cb2b6` ## 验证结果 - 目标和回退两个隔离工作树的 Go 1.23.0 `go test ./... -count=1`、`go vet ./...` 与 Linux amd64 静态构建通过。 - 切换前共四次确认运行中 SYB 同步为 0;部署后仍为 0。 - 未验证:未用生产账号手工粘贴 Excel 多订单号;未演练备份恢复;未触发真实同步、采集、采购或下单。
Author
Owner

实施中发现生产当前 release e8c5293 只支持 schema v14,而目标 5bf6764 会追加执行 v15-v19。迁移后原 release 会因“schema 高于程序支持版本”无法启动。

按工单中“上一个与当前 schema 兼容的 release”执行:在切换前同时从 2ebe6bf(#217 之前、#216 归档后)构建兼容 schema v19 的回退二进制并上传独立 release。应用快速回退使用 2ebe6bf;若迁移本身需回退,则停机恢复本次 MySQL 备份后再切回 e8c5293。

实施中发现生产当前 release `e8c5293` 只支持 schema v14,而目标 `5bf6764` 会追加执行 v15-v19。迁移后原 release 会因“schema 高于程序支持版本”无法启动。 按工单中“上一个与当前 schema 兼容的 release”执行:在切换前同时从 `2ebe6bf`(#217 之前、#216 归档后)构建兼容 schema v19 的回退二进制并上传独立 release。应用快速回退使用 `2ebe6bf`;若迁移本身需回退,则停机恢复本次 MySQL 备份后再切回 `e8c5293`。
Author
Owner

生产预检结果:

  • 当前运行路径:/opt/cmautobuy/releases/e8c5293/cmautobuy-admin,service active。
  • 生产 schema 实际已是 v19(不是根据当前 release 预估的 v14)。因 e8c5293 只支持到 v14,当前进程虽仍运行,但重启后不能再作为回退版。
  • 连续 3 次运行中 SYB 同步检查均为 0。
  • 已完成生产 MySQL 逻辑备份,权限 600,gzip 校验通过,SHA-256 已在服务器和归档中记录。
  • 因 schema 已是 v19,本次启动不会再执行 v15-v19 迁移;快速回退目标固定为 2ebe6bf。
生产预检结果: - 当前运行路径:`/opt/cmautobuy/releases/e8c5293/cmautobuy-admin`,service active。 - 生产 schema 实际已是 v19(不是根据当前 release 预估的 v14)。因 `e8c5293` 只支持到 v14,当前进程虽仍运行,但重启后不能再作为回退版。 - 连续 3 次运行中 SYB 同步检查均为 0。 - 已完成生产 MySQL 逻辑备份,权限 600,gzip 校验通过,SHA-256 已在服务器和归档中记录。 - 因 schema 已是 v19,本次启动不会再执行 v15-v19 迁移;快速回退目标固定为 `2ebe6bf`。
Author
Owner

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。
ila closed this issue 2026-08-13 15:57:03 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#218