docs: 归档生产部署任务 #301
This commit is contained in:
@@ -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(本次固定发布基线)
|
||||
Reference in New Issue
Block a user