docs: 归档生产部署任务 #301

This commit is contained in:
chengma
2026-08-24 17:54:42 +08:00
parent f7c2ce3756
commit f323dda49f
@@ -0,0 +1,89 @@
# 301 Admin:部署顺运宝只读分页超时重试版本到生产
- 类型:部署
- 父级大工单:#14
- 所属 MVP / 版本:#15 / 当前生产版本
- 状态:已完成,待用户验收
- 日期:2026-08-24
- Gitea 工单:https://git.ilapage.cn/OPC/cmautobuy/issues/301
## 背景与目标
生产原来运行 `96d9e30`,还没有 #300 为顺运宝只读分页请求增加的同页有限重试和
60 秒单次 HTTP 超时。本任务将包含 #300 的固定提交 `f7c2ce3` 发布到生产,不修改
数据库结构、生产配置、密钥或业务数据。
## 最终方案
- 从固定提交 `f7c2ce375614cd6494a5043d0c65f968856a293c` 导出完整 Git 归档,未带入
当前工作区未提交的 Client 文件、本地配置、环境文件或密钥。
- 使用 Go 1.23.0 完成 test、build 和 vet,再以 Linux amd64、`CGO_ENABLED=0`、
`-trimpath -ldflags="-s -w"` 生成静态发布物。二进制大小为 28,328,088 字节,
本地、上传、release 和生产 SHA-256 均为
`37e29be31c8615b6fc9fa1bf370e66ccba8cf45cf1bb3e2f4dd8acc676fea7bc`。
- 切换前确认 schema 为 v30,顺运宝同步、商品目录导入、AI 批量匹配和档口入库码
后台活动任务均为 0。
- 使用 `mysqldump --no-defaults --no-tablespaces --single-transaction` 创建 gzip
逻辑备份,并验证 gzip、0600 权限、文件大小、SHA-256 和 34 个建表段。
- 发布到 `/opt/cmautobuy/releases/f7c2ce3/`,其中 `config.yaml` 和 `data` 分别链接
到稳定 `/opt/cmautobuy/config.yaml` 与 `/opt/cmautobuy/data`,未复制或替换配置、
数据目录和密钥环境。
- 在空闲端口 18083 以生产账号、配置和环境变量完成启动预检;根路径、登录页和顺运宝
受保护页面分别返回 303、200、303,日志没有启动、迁移或 panic 错误。首次预检命令已
完成上述检查,但 PowerShell 经标准输入发送脚本时给最后一条 `tail` 命令附带回车,
使包装命令返回非零;预检进程由 trap 正常停止,确认端口释放后单独读取同一日志完成
复核,线上 18080 服务未受影响。
- 原子切换稳定二进制链接并重启 systemd。切换脚本中的首次 journal 时间范围使用了该
服务器旧版 systemd 不接受的 ISO 写法;切换后的服务、进程、HTTP、schema 和活动任务
检查均已通过,随后立即改用 `5 minutes ago` 重新执行日志检查,结果无 fatal、panic、
数据库迁移或 schema 自检错误。
- 上一 release `96d9e30` 保留,可直接执行二进制回退。本版本没有数据库迁移,schema
始终保持 v30;没有主动触发真实顺运宝同步或其他业务写入。
## 改了哪些
- `/opt/cmautobuy/releases/f7c2ce3/cmautobuy-admin`:新增并启用生产二进制,权限
0750,属主 `cmautobuy:cmautobuy`。
- `/opt/cmautobuy/releases/f7c2ce3/config.yaml`、`data`:分别链接到稳定配置文件和
数据目录。
- `/opt/cmautobuy/cmautobuy-admin`:稳定链接从 `96d9e30` 原子切换到 `f7c2ce3`。
- `/opt/cmautobuy/backups/autobuy-before-301-20260824T094856Z-notablespaces.sql.gz`:
部署前逻辑备份,83,499,964 字节、权限 0600、34 个建表段,SHA-256 为
`6c01455c9cb2731c0e242339a8964f885ded8c7e8b47a4ddc0068831cadd481f`。
- 生产 MySQL:未执行迁移,`schema_migrations` 保持 v30,业务数据未主动改动。
- `docs/task/301-admin部署顺运宝分页超时重试版本到生产.md`:记录本次部署结果。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 发布物仅来自固定提交 `f7c2ce3`,未包含本地未提交文件或凭据 | 通过 |
| Go 1.23.0 完整 test、build、vet 通过 | 通过 |
| 发布前生产 schema v30,四类后台活动任务均为 0 | 通过 |
| MySQL 备份通过 gzip、权限、大小和 34 个建表段检查 | 通过 |
| 新 release 在独立端口 18083 预检通过 | 通过 |
| systemd active/enabled,稳定链接和进程均指向 `f7c2ce3` | 通过 |
| Nginx、本机与公网 HTTP 状态符合预期 | 通过 |
| 发布后 schema v30、四类后台活动任务仍为 0,近期日志无关键错误 | 通过 |
| 上一 release `96d9e30` 保留,可执行二进制回退 | 通过 |
| 未触发同步、AI 调用、采集、采购、下单或付款 | 通过 |
## 测试
- 执行的命令:在固定提交的完整隔离源码 `admin/` 下以 Go 1.23.0 执行
`go test ./... -count=1`、`go build ./...`、`go vet ./...`,再以
`GOOS=linux GOARCH=amd64 CGO_ENABLED=0` 构建发布物;服务器执行 SHA-256、
`mysqldump`、`gzip -t`、schema 与活动任务查询、18083 独立端口预检、`systemctl`、
`ss`、`nginx -t` 和近期日志检查;本机执行公网 HTTPS 检查。
- 结果:生产稳定链接和实际进程均指向 `f7c2ce3`;schema 为 v30;systemd
active/enabled;本机与公网根路径、登录页和顺运宝受保护页面分别为 303、200、303;
发布前后四类后台活动任务均为 0;近期日志没有 fatal、panic、数据库迁移失败或
schema 自检失败。
- **没验证到的部分**:没有主动执行生产顺运宝同步,因此未用真实第 45 页慢请求验证
60 秒超时和三次同页重试;未使用生产账号登录后做页面视觉验收;未实际执行二进制
回退或数据库备份恢复。
## 相关提交
- `439639c` fix: 增加顺运宝只读分页有限重试 (#300)
- `f7c2ce3` docs: 归档任务 #300(本次固定发布基线)