Admin:打包部署最新版本 17c2d45 到生产服务器 #241

Open
opened 2026-08-15 14:38:06 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:部署
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / Admin 生产部署
  • 阶段:发布档口入库码完整闭环及 #240 修复

要解决什么

生产 Admin 当前运行 /opt/cmautobuy/releases/0208dc6/cmautobuy-admin,生产数据库已经是 schema v24;本地最新已提交基线为 17c2d45,包含档口入库码导入、部分匹配、自动登录、Excel 日期、软删除、工具栏和同一商品多件入库码聚合回写等后续改动。需要把最新 Admin 固定提交打包部署到 185.216.248.75,继续通过 https://buy.833729.com 提供服务。

部署前只读核对:systemd 为 active/enabled,监听 127.0.0.1:18080,生产 schema v24,运行中 SYB 同步 0、AI 匹配批次 0,档口入库码现有记录 48 条,最近两小时启动日志关键错误 0。

做什么 / 不做什么

  • 做:
    • 从固定提交 17c2d45 的隔离 worktree 使用 Go 1.23.0 测试、vet 并构建 Linux amd64 静态二进制。
    • 从提交 5d72141 构建同样支持 schema v24 的快速回退二进制;���留当前 0208dc6 release。
    • 发布前再次核对 SYB、AI 和档口入库码回写运行态,生成生产 MySQL 单事务逻辑备份并校验 gzip、表段、权限和哈希。
    • 上传到独立 release,复用稳定 config.yaml、data 软链接;不复制或输出凭据及 AI 密钥。
    • 停止 systemd 后原子切换稳定二进制链接;启动或本机健康检查失败时自动切回 5d72141。
    • 部署后核对 release、二进制哈希、systemd、监听、schema、运行态、启动日志、本机和公网 HTTPS。
  • 不做:
    • 不修改生产配置、AI 密钥、数据库业务数据、Nginx 或 MySQL权限。
    • 不触发顺运宝同步、档口入库码匹配/回写、AI 匹配、采集、采购、下单或付款。
    • 不打包本地 admin/config.yaml、admin/data、admin/.deploy 或工作区未提交的 Client 文件。
    • 不关闭 #240;部署完成后仍由用户进行业务验收。

怎么做

  • 使用两个系统临时目录创建 detached worktree,目标固定 17c2d45,回退固定 5d72141。
  • 两个 worktree 的 admin/ 均执行固定 Go 1.23.0 测试和 vet;以 GOOS=linux GOARCH=amd64 CGO_ENABLED=0、-trimpath -ldflags='-s -w' 构建。
  • 生产备份使用 /etc/cmautobuy/admin.env 中现有数据库连接变量,不打印变量值;备份放在 /opt/cmautobuy/backups/、权限 0600。
  • release 目录只包含二进制以及指向 /opt/cmautobuy/config.yaml、/opt/cmautobuy/data 的软链接;AI 密钥继续由 systemd 环境指向 release 外目录。
  • 部署脚本在切换前保存旧链接,目标失败时切换至 v24 兼容回退 release 并重启。

验收标准

  • 目标和回退发布物只来自固定提交,Go 1.23.0 测试、vet、Linux amd64 构建通过。
  • 发布前 SYB 同步、AI 匹配和档口入库码 applying 均为 0。
  • 生产数据库备份权限为 0600,gzip 可读取、包含业务表且 SHA-256 已记录。
  • 本地、上传暂存和最终 release 二进制 SHA-256 一致。
  • 稳定链接指向 17c2d45,5d72141 和原 0208dc6 release 保留。
  • systemd active/enabled,监听 127.0.0.1:18080,启动日志无迁移或 panic 错误。
  • schema 保持 v24,本机根路径/登录页和公网 HTTPS 登录页响应正常。
  • 新二进制包含 #240 聚合导入反馈标识,生产配置、密钥和业务数据未被部署流程改写。

怎么验证

本地 admin/:

$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" -o <临时发布物> .

生产执行运行态 SQL、mysqldump --no-tablespaces --single-transaction、gzip -t、sha256sum、readlink、systemctl、ss、journalctl 和 curl 健康检查。

风险和回退

  • 生产已是 schema v24,旧 0208dc6 不作为首选重启回退;使用同样支持 v24 的 5d72141。
  • systemd 停止期间若仍有档口入库码远端写请求,结果可能进入需核对,因此切换前必须确认 applying=0;任何非零状态都停止部署。
  • 新版本健康检查失败时自动切换到 /opt/cmautobuy/releases/5d72141/cmautobuy-admin 并重启。数据库本次没有新迁移,不执行数据库回滚;备份仅用于灾难恢复,恢复会覆盖备份后的业务数据,不能自动执行。
## 基本信息 - 类型:部署 - 父级大工单:#14 - 所属 MVP / 版本:#15 / Admin 生产部署 - 阶段:发布档口入库码完整闭环及 #240 修复 ## 要解决什么 生产 Admin 当前运行 `/opt/cmautobuy/releases/0208dc6/cmautobuy-admin`,生产数据库已经是 schema v24;本地最新已提交基线为 `17c2d45`,包含档口入库码导入、部分匹配、自动登录、Excel 日期、软删除、工具栏和同一商品多件入库码聚合回写等后续改动。需要把最新 Admin 固定提交打包部署到 `185.216.248.75`,继续通过 `https://buy.833729.com` 提供服务。 部署前只读核对:systemd 为 active/enabled,监听 `127.0.0.1:18080`,生产 schema v24,运行中 SYB 同步 0、AI 匹配批次 0,档口入库码现有记录 48 条,最近两小时启动日志关键错误 0。 ## 做什么 / 不做什么 - 做: - 从固定提交 `17c2d45` 的隔离 worktree 使用 Go 1.23.0 测试、vet 并构建 Linux amd64 静态二进制。 - 从提交 `5d72141` 构建同样支持 schema v24 的快速回退二进制;���留当前 `0208dc6` release。 - 发布前再次核对 SYB、AI 和档口入库码回写运行态,生成生产 MySQL 单事务逻辑备份并校验 gzip、表段、权限和哈希。 - 上传到独立 release,复用稳定 `config.yaml`、`data` 软链接;不复制或输出凭据及 AI 密钥。 - 停止 systemd 后原子切换稳定二进制链接;启动或本机健康检查失败时自动切回 `5d72141`。 - 部署后核对 release、二进制哈希、systemd、监听、schema、运行态、启动日志、本机和公网 HTTPS。 - 不做: - 不修改生产配置、AI 密钥、数据库业务数据、Nginx 或 MySQL权限。 - 不触发顺运宝同步、档口入库码匹配/回写、AI 匹配、采集、采购、下单或付款。 - 不打包本地 `admin/config.yaml`、`admin/data`、`admin/.deploy` 或工作区未提交的 Client 文件。 - 不关闭 #240;部署完成后仍由用户进行业务验收。 ## 怎么做 - 使用两个系统临时目录创建 detached worktree,目标固定 `17c2d45`,回退固定 `5d72141`。 - 两个 worktree 的 `admin/` 均执行固定 Go 1.23.0 测试和 vet;以 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0`、`-trimpath -ldflags='-s -w'` 构建。 - 生产备份使用 `/etc/cmautobuy/admin.env` 中现有数据库连接变量,不打印变量值;备份放在 `/opt/cmautobuy/backups/`、权限 `0600`。 - release 目录只包含二进制以及指向 `/opt/cmautobuy/config.yaml`、`/opt/cmautobuy/data` 的软链接;AI 密钥继续由 systemd 环境指向 release 外目录。 - 部署脚本在切换前保存旧链接,目标失败时切换至 v24 兼容回退 release 并重启。 ## 验收标准 - [x] 目标和回退发布物只来自固定提交,Go 1.23.0 测试、vet、Linux amd64 构建通过。 - [x] 发布前 SYB 同步、AI 匹配和档口入库码 `applying` 均为 0。 - [x] 生产数据库备份权限为 `0600`,gzip 可读取、包含业务表且 SHA-256 已记录。 - [x] 本地、上传暂存和最终 release 二进制 SHA-256 一致。 - [x] 稳定链接指向 `17c2d45`,`5d72141` 和原 `0208dc6` release 保留。 - [x] systemd active/enabled,监听 `127.0.0.1:18080`,启动日志无迁移或 panic 错误。 - [x] schema 保持 v24,本机根路径/登录页和公网 HTTPS 登录页响应正常。 - [x] 新二进制包含 #240 聚合导入反馈标识,生产配置、密钥和业务数据未被部署流程改写。 ## 怎么验证 本地 `admin/`: ```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" -o <临时发布物> . ``` 生产执行运行态 SQL、`mysqldump --no-tablespaces --single-transaction`、`gzip -t`、`sha256sum`、`readlink`、`systemctl`、`ss`、`journalctl` 和 `curl` 健康检查。 ## 风险和回退 - 生产已是 schema v24,旧 `0208dc6` 不作为首选重启回退;使用同样支持 v24 的 `5d72141`。 - systemd 停止期间若仍有档口入库码远端写请求,结果可能进入需核对,因此切换前必须确认 `applying=0`;任何非零状态都停止部署。 - 新版本健康检查失败时自动切换到 `/opt/cmautobuy/releases/5d72141/cmautobuy-admin` 并重启。数据库本次没有新迁移,不执行数据库回滚;备份仅用于灾难恢复,恢复会覆盖备份后的业务数据,不能自动执行。
Author
Owner

实施记录:首次并行构建脚本在运行测试前提前设置了 GOOS=linux,Windows 因无法执行生成的 Linux 测试二进制而报 %1 is not a valid Win32 application。这是本地构建编排错误,不是代码测试失败,也未上传或修改服务器。已停止该结果,调整为先用 Windows 原生目标执行 Go 1.23.0 test/vet,再仅在 go build 前设置 Linux amd64;现有临时产物将被覆盖并重新校验。

实施记录:首次并行构建脚本在运行测试前提前设置了 `GOOS=linux`,Windows 因无法执行生成的 Linux 测试二进制而报 `%1 is not a valid Win32 application`。这是本地构建编排错误,不是代码测试失败,也未上传或修改服务器。已停止该结果,调整为先用 Windows 原生目标执行 Go 1.23.0 test/vet,再仅在 `go build` 前设置 Linux amd64;现有临时产物将被覆盖并重新校验。
Author
Owner

部署完成,待用户验收

  • 生产已从 0208dc6 切换到 /opt/cmautobuy/releases/17c2d45/cmautobuy-admin。
  • v24 兼容快速回退 release:5d72141;原 0208dc6 继续保留。
  • 目标 SHA-256:bb3118e6055857f1f9aabf95381a8082a20d1c89d733a013853778b4eab443b8。
  • 部署前备份:/opt/cmautobuy/backups/autobuy-before-241-20260815T064227Z-notablespaces.sql.gz,权限 0600、gzip 可读、31 个建表段,SHA-256 fc18c62ad4e6eddf8dc46e4e9c7b0da55bf31615fbcf8af8ec2ab45ce3557972。
  • systemd active/enabled,监听 127.0.0.1:18080;schema v24;SYB、AI、档口回写运行数均为 0;档口入库码仍为 48 条。
  • 本机根路径 303、登录页 200;公网根路径 303、登录页 200、静态 JS 200;Nginx 配置正常。
  • AI 密钥环境和 release 外文件权限保持正常,未读取或输出密钥内容。
  • 新二进制已命中 #240 的“同业务键合并”标识。

实施中两次非业务失败已记录:首次本地脚本把 GOOS=linux 提前用于 Windows 测试,修正后目标与回退的 Go 1.23.0 全量测试、vet、Linux 构建全部通过;部署后综合脚本最后的 wc 受 CRLF 影响,随后独立确认上传暂存文件已清理。两者都未影响生产切换结果。

提交与归档:

  • 生产目标:17c2d45
  • 回退基线:5d72141
  • 归档提交:8c09023
  • 归档:docs/task/241-admin部署最新版本17c2d45.md

未触发真实同步、匹配、档口回写、采集、采购、下单或付款。#240 的真实逗号值回写仍待用户业务验收。

## 部署完成,待用户验收 - 生产已从 `0208dc6` 切换到 `/opt/cmautobuy/releases/17c2d45/cmautobuy-admin`。 - v24 兼容快速回退 release:`5d72141`;原 `0208dc6` 继续保留。 - 目标 SHA-256:`bb3118e6055857f1f9aabf95381a8082a20d1c89d733a013853778b4eab443b8`。 - 部署前备份:`/opt/cmautobuy/backups/autobuy-before-241-20260815T064227Z-notablespaces.sql.gz`,权限 `0600`、gzip 可读、31 个建表段,SHA-256 `fc18c62ad4e6eddf8dc46e4e9c7b0da55bf31615fbcf8af8ec2ab45ce3557972`。 - systemd active/enabled,监听 `127.0.0.1:18080`;schema v24;SYB、AI、档口回写运行数均为 0;档口入库码仍为 48 条。 - 本机根路径 303、登录页 200;公网根路径 303、登录页 200、静态 JS 200;Nginx 配置正常。 - AI 密钥环境和 release 外文件权限保持正常,未读取或输出密钥内容。 - 新二进制已命中 #240 的“同业务键合并”标识。 实施中两次非业务失败已记录:首次本地脚本把 `GOOS=linux` 提前用于 Windows 测试,修正后目标与回退的 Go 1.23.0 全量测试、vet、Linux 构建全部通过;部署后综合脚本最后的 `wc` 受 CRLF 影响,随后独立确认上传暂存文件已清理。两者都未影响生产切换结果。 提交与归档: - 生产目标:`17c2d45` - 回退基线:`5d72141` - 归档提交:`8c09023` - 归档:`docs/task/241-admin部署最新版本17c2d45.md` 未触发真实同步、匹配、档口回写、采集、采购、下单或付款。#240 的真实逗号值回写仍待用户业务验收。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#241