Admin:打包部署最新版本 4d6ee8c 到生产服务器 #228

Open
opened 2026-08-14 17:18:31 +08:00 by ila · 1 comment
Owner

基本信息

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

要解决什么

生产服务当前仍运行提交 a14c2bf 的 Admin,而本地最新已提交基线是 4d6ee8c。需要把包含 AI 服务商配置、规格候选匹配、批量 AI 匹配、AI HTTP 兼容及后续数据维护代码的最新 Admin 打包部署到 185.216.248.75,通过 https://buy.833729.com 提供服务。

生产数据库已经是 schema v22,当前 a14c2bf 只支持较旧 schema,不能作为重启后的快速回退版本。发布必须准备一个支持 v22 的已提交版本作为二进制回退点,并保留完整数据库备份。

做什么 / 不做什么

  • 做:只从固定提交 4d6ee8c 的隔离工作树构建 Admin,不包含主工作区未提交 Client 文件。
  • 做:使用固定 Go 1.23.0 完成全量测试、vet 和 Linux amd64 静态构建,核对发布物哈希。
  • 做:确认没有运行中的 SYB 同步和 AI 匹配批次,备份生产 MySQL,上传独立 release、原子切换并验证 systemd、本机和公网健康状态。
  • 做:准备支持 schema v22 的提交 557c996 作为快速回退 release;新版本启动或健康检查失败时自动切回。
  • 不做:不修改生产配置、AI 密钥、数据库业务数据或 schema;不触发同步、AI 匹配、采集、采购、下单或付款;不部署 Client。

怎么做

  • 从提交 4d6ee8c 和回退提交 557c996 分别建立仓库外 detached worktree,避免主工作区脏文件进入构建。
  • 两个版本均使用 GOTOOLCHAIN=go1.23.0 执行 go test ./... -count=1、go vet ./...,并以 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 构建带嵌入模板和静态资源的二进制。
  • 发布前连续检查 syb_sync_runs 与 ai_match_batches 没有运行态;生成 --no-tablespaces 单事务逻辑备份,设置 0600,并校验 gzip。
  • 上传到 /opt/cmautobuy/releases/4d6ee8c/ 和 /opt/cmautobuy/releases/557c996/,建立稳定配置和数据软链接,核对本地、上传和安装文件 SHA-256。
  • 停止服务后原子切换 /opt/cmautobuy/cmautobuy-admin,启动并检查 schema v22 自检、监听、日志、本机登录页和公网 HTTPS;失败则切到回退 release 并重启。
  • 预计只改变服务器 release 与稳定执行链接,并新增本地部署归档;不修改业务代码。

验收标准

  • 发布包只来自固定提交 4d6ee8c,不含未提交文件。
  • 目标和回退版本均通过固定 Go 1.23.0 测试、vet 和 Linux amd64 构建。
  • 发布前没有运行中的 SYB 同步或 AI 匹配批次,完整数据库备份权限为 0600 且 gzip 可读。
  • 远端目标和回退二进制 SHA-256 与本地一致,旧 release 继续保留。
  • 稳定执行链接指向 /opt/cmautobuy/releases/4d6ee8c/cmautobuy-admin。
  • systemd active/enabled,监听 127.0.0.1:18080,schema 保持 v22,启动日志无迁移或配置错误。
  • 本机登录页和公网 https://buy.833729.com/login 返回 200,最新 AI 与 SYB 静态页面资源已生效。
  • 未修改凭据、业务数据或任务状态,未触发任何真实业务动作。

怎么验证

本地隔离工作树执行:

$env:GOTOOLCHAIN='go1.23.0'; go test ./... -count=1; go vet ./...
$env:GOOS='linux'; $env:GOARCH='amd64'; $env:CGO_ENABLED='0'; go build -trimpath -ldflags='-s -w'

生产执行 release 链接、SHA-256、systemd、监听、schema、运行中批次、启动日志以及本机/公网 HTTP 检查。

风险和回退

  • 当前生产二进制 a14c2bf 与 schema v22 不兼容,重启后不得直接回退到它。
  • 应用回退使用已测试且支持 v22 的 557c996;若需要回到更旧 schema,必须停机恢复本工单数据库备份,会覆盖备份后的业务数据,不作为普通快速回退。
  • 服务重启会有短暂不可用;部署前必须确认没有运行中的同步或 AI 批次,避免把长任务中断。
## 基本信息 - 类型:部署 - 父级大工单:#14 - 所属 MVP / 版本:#15 / Admin 生产部署 - 阶段:发布最新 Admin ## 要解决什么 生产服务当前仍运行提交 `a14c2bf` 的 Admin,而本地最新已提交基线是 `4d6ee8c`。需要把包含 AI 服务商配置、规格候选匹配、批量 AI 匹配、AI HTTP 兼容及后续数据维护代码的最新 Admin 打包部署到 `185.216.248.75`,通过 `https://buy.833729.com` 提供服务。 生产数据库已经是 schema v22,当前 `a14c2bf` 只支持较旧 schema,不能作为重启后的快速回退版本。发布必须准备一个支持 v22 的已提交版本作为二进制回退点,并保留完整数据库备份。 ## 做什么 / 不做什么 - 做:只从固定提交 `4d6ee8c` 的隔离工作树构建 Admin,不包含主工作区未提交 Client 文件。 - 做:使用固定 Go 1.23.0 完成全量测试、vet 和 Linux amd64 静态构建,核对发布物哈希。 - 做:确认没有运行中的 SYB 同步和 AI 匹配批次,备份生产 MySQL,上传独立 release、原子切换并验证 systemd、本机和公网健康状态。 - 做:准备支持 schema v22 的提交 `557c996` 作为快速回退 release;新版本启动或健康检查失败时自动切回。 - 不做:不修改生产配置、AI 密钥、数据库业务数据或 schema;不触发同步、AI 匹配、采集、采购、下单或付款;不部署 Client。 ## 怎么做 - 从提交 `4d6ee8c` 和回退提交 `557c996` 分别建立仓库外 detached worktree,避免主工作区脏文件进入构建。 - 两个版本均使用 `GOTOOLCHAIN=go1.23.0` 执行 `go test ./... -count=1`、`go vet ./...`,并以 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0` 构建带嵌入模板和静态资源的二进制。 - 发布前连续检查 `syb_sync_runs` 与 `ai_match_batches` 没有运行态;生成 `--no-tablespaces` 单事务逻辑备份,设置 0600,并校验 gzip。 - 上传到 `/opt/cmautobuy/releases/4d6ee8c/` 和 `/opt/cmautobuy/releases/557c996/`,建立稳定配置和数据软链接,核对本地、上传和安装文件 SHA-256。 - 停止服务后原子切换 `/opt/cmautobuy/cmautobuy-admin`,启动并检查 schema v22 自检、监听、日志、本机登录页和公网 HTTPS;失败则切到回退 release 并重启。 - 预计只改变服务器 release 与稳定执行链接,并新增本地部署归档;不修改业务代码。 ## 验收标准 - [x] 发布包只来自固定提交 `4d6ee8c`,不含未提交文件。 - [x] 目标和回退版本均通过固定 Go 1.23.0 测试、vet 和 Linux amd64 构建。 - [x] 发布前没有运行中的 SYB 同步或 AI 匹配批次,完整数据库备份权限为 0600 且 gzip 可读。 - [x] 远端目标和回退二进制 SHA-256 与本地一致,旧 release 继续保留。 - [x] 稳定执行链接指向 `/opt/cmautobuy/releases/4d6ee8c/cmautobuy-admin`。 - [x] systemd active/enabled,监听 `127.0.0.1:18080`,schema 保持 v22,启动日志无迁移或配置错误。 - [x] 本机登录页和公网 `https://buy.833729.com/login` 返回 200,最新 AI 与 SYB 静态页面资源已生效。 - [x] 未修改凭据、业务数据或任务状态,未触发任何真实业务动作。 ## 怎么验证 本地隔离工作树执行: ```powershell $env:GOTOOLCHAIN='go1.23.0'; go test ./... -count=1; go vet ./... $env:GOOS='linux'; $env:GOARCH='amd64'; $env:CGO_ENABLED='0'; go build -trimpath -ldflags='-s -w' ``` 生产执行 release 链接、SHA-256、systemd、监听、schema、运行中批次、启动日志以及本机/公网 HTTP 检查。 ## 风险和回退 - 当前生产二进制 `a14c2bf` 与 schema v22 不兼容,重启后不得直接回退到它。 - 应用回退使用已测试且支持 v22 的 `557c996`;若需要回到更旧 schema,必须停机恢复本工单数据库备份,会覆盖备份后的业务数据,不作为普通快速回退。 - 服务重启会有短暂不可用;部署前必须确认没有运行中的同步或 AI 批次,避免把长任务中断。
Author
Owner

部署完成,待用户验收

  • 生产目标代码:4d6ee8c
  • 部署归档提交:03d3cb5(docs: 归档生产部署任务 #228)
  • 归档:docs/task/228-admin部署最新版本4d6ee8c.md

发布结果

  • 发布前版本:/opt/cmautobuy/releases/a14c2bf/cmautobuy-admin
  • 当前版本:/opt/cmautobuy/releases/4d6ee8c/cmautobuy-admin
  • v22 快速回退:/opt/cmautobuy/releases/557c996/cmautobuy-admin
  • 目标 SHA-256:446e5903ec7768684bf30fcfdd9f0b46530b68d505ab23360f7b2c08d0ff3d5f
  • 回退 SHA-256:4f28d42a28bcc4c3ff0085303e754f108f2136928bf1e4ae8767b8076a9cd4b0
  • 数据库备份:/opt/cmautobuy/backups/autobuy-before-228-20260814T092057Z-notablespaces.sql.gz,权限 0600、gzip 校验通过

验证结果

  • 目标和回退版本固定 Go 1.23.0 全量测试、vet、Linux amd64 静态构建:通过
  • 发布前连续三次、切换前一次检查:运行中 SYB 同步 0、运行中 AI 批次 0
  • 本地、上传、release 三处二进制哈希一致
  • systemd:active/enabled;监听 127.0.0.1:18080
  • schema:v22,未发生新迁移
  • 本机:根路径 303、登录页 200
  • 公网:根路径 303、登录页 200、AI 设置未登录返回 303
  • 公网 JS 已包含批量 AI 匹配入口,CSS 已包含 AI 匹配进度样式
  • 已启用的 gpt-5.5 配置仍为连接测试成功
  • 新进程启动后 Client 领取轮询继续返回 204
  • 上传暂存区和本地隔离构建目录已清理

未验证

未登录生产账号人工操作 AI 设置或批量 AI 匹配;未创建采集/采购任务,未执行真机下单或付款;未实际触发回退。

## 部署完成,待用户验收 - 生产目标代码:`4d6ee8c` - 部署归档提交:`03d3cb5`(`docs: 归档生产部署任务 #228`) - 归档:`docs/task/228-admin部署最新版本4d6ee8c.md` ### 发布结果 - 发布前版本:`/opt/cmautobuy/releases/a14c2bf/cmautobuy-admin` - 当前版本:`/opt/cmautobuy/releases/4d6ee8c/cmautobuy-admin` - v22 快速回退:`/opt/cmautobuy/releases/557c996/cmautobuy-admin` - 目标 SHA-256:`446e5903ec7768684bf30fcfdd9f0b46530b68d505ab23360f7b2c08d0ff3d5f` - 回退 SHA-256:`4f28d42a28bcc4c3ff0085303e754f108f2136928bf1e4ae8767b8076a9cd4b0` - 数据库备份:`/opt/cmautobuy/backups/autobuy-before-228-20260814T092057Z-notablespaces.sql.gz`,权限 `0600`、gzip 校验通过 ### 验证结果 - 目标和回退版本固定 Go 1.23.0 全量测试、vet、Linux amd64 静态构建:通过 - 发布前连续三次、切换前一次检查:运行中 SYB 同步 0、运行中 AI 批次 0 - 本地、上传、release 三处二进制哈希一致 - systemd:active/enabled;监听 `127.0.0.1:18080` - schema:v22,未发生新迁移 - 本机:根路径 303、登录页 200 - 公网:根路径 303、登录页 200、AI 设置未登录返回 303 - 公网 JS 已包含批量 AI 匹配入口,CSS 已包含 AI 匹配进度样式 - 已启用的 `gpt-5.5` 配置仍为连接测试成功 - 新进程启动后 Client 领取轮询继续返回 204 - 上传暂存区和本地隔离构建目录已清理 ### 未验证 未登录生产账号人工操作 AI 设置或批量 AI 匹配;未创建采集/采购任务,未执行真机下单或付款;未实际触发回退。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#228