Admin:打包部署最新版本 6ea45b7 到生产服务器 #188

Closed
opened 2026-08-12 16:29:38 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:部署
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 阶段:生产发布
  • 状态:已验收

要解决什么

把提交 6ea45b7 对应的最新 Admin(包含 #185、#186;#187 为 Client 变更,不进入 Admin 二进制)构建并发布到 185.216.248.75,通过 https://buy.833729.com 提供服务,同时保留生产数据、配置和上一版本回退能力。

做什么 / 不做什么

  • 做:固定 Go 1.23.0 全量验证并构建 Linux amd64、CGO 关闭的单文件二进制。
  • 做:发布前备份生产 autobuy 数据库,校验 gzip 并限制备份权限。
  • 做:上传到独立 release 目录,复用稳定 config.yaml 与 data 软链接。
  • 做:原子切换稳定二进制链接,重启 systemd,验证日志、监听端口、schema 和公网 HTTPS。
  • 做:保留当前生产 release 作为应用回退版本,并记录数据库备份路径。
  • 不做:不提交或上传本地 config.yaml,不修改生产凭据、Nginx、MySQL 权限或业务数据。
  • 不做���不在生产执行真实同步、创建任务或真实采购。

怎么做

  1. 记录当前 Git 基线和工作区,确保只从已提交源码构建。
  2. 从 admin/ 使用 GOTOOLCHAIN=go1.23.0 执行 vet、test,并用 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 构建到被忽略的 .deploy/。
  3. 在服务器使用业务账号 mysqldump --single-transaction --quick --no-tablespaces 备份 autobuy,启用管道失败检测;设置 600 后执行 gzip -t。
  4. 新建 /opt/cmautobuy/releases/6ea45b7/,上传二进制,核对 SHA-256,建立稳定配置与数据软链接。
  5. 停止服务,原子切换 /opt/cmautobuy/cmautobuy-admin,启动服务;失败立即回切原 release。
  6. 验证 systemd active/enabled、进程实际路径、127.0.0.1 监听、启动日志、schema 版本、本机 HTTP 与公网 HTTPS。

验收标准

  • 固定 Go 1.23.0 的 vet、test 和 Linux amd64 构建通过。
  • 本地和服务器二进制 SHA-256 一致。
  • 部署前数据库备份权限为 600 且 gzip -t 通过。
  • 当前 release 指向 6ea45b7,上一 release 保留可回退。
  • systemd active/enabled,启动日志无迁移、自检、panic 或 fatal 错误。
  • Admin 仅监听预期本机端口,根路径跳转登录页,登录页 HTTP 200。
  • https://buy.833729.com/login 从服务器和外部网络均返回 HTTP 200。
  • 未上传凭据,未执行真实同步、建任务或采购。

怎么验证

本地执行固定 Go 1.23.0 的 vet/test/Linux build 和 SHA-256;服务器执行 sha256sum、gzip -t、systemctl is-active/is-enabled、readlink、ss -lntp、journalctl、只读 schema 查询及 curl;外部执行公网 HTTPS 健康检查。

风险和回退

  • 风险:新进程启动失败或 schema 自检失败。控制:切换前备份、保留上一 release;启动失败立即回切并重启。
  • 风险:生产配置被覆盖或泄漏。控制:只建立既有稳定配置软链接,不打包、不打印配置内容。
  • 风险:备份因业务账号权限不足而生成无效文件。控制:使用 --no-tablespaces、管道失败检测和 gzip -t,失败文件立即删除。
  • 回退:应用回切部署前 readlink 记录的 release;必要时由数据库管理员使用本次备份恢复数据。

实施记录

  • 部署基线:6ea45b7。
  • 归档提交:3f5ee83。
  • 归档文档:docs/task/188-admin打包部署最新版本.md。
  • 二进制 SHA-256:f8e3bd1e813844a0fc74c7f06ed82d6cddc5e5ffe63faecf9eb4c219b0f17e17,本地与远端一致。
  • 数���库备份:/opt/cmautobuy/backups/autobuy-before-188-20260812T083428Z.sql.gz,5,039,803 字节,权限 600,gzip 校验通过。
  • 当前运行版本:/opt/cmautobuy/releases/6ea45b7/cmautobuy-admin;上一版本 7e2d33c 保留。
  • 验证结果:systemd active/enabled;监听 127.0.0.1:18080;schema v13;本机根路径 303、登录页 200;服务器和外部公网登录页均为 200;启动错误日志计数为 0。
  • 未验证:未登录生产账号逐页人工验收,未发起真实同步、采集或采购任务。
## 基本信息 - 类型:部署 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 阶段:生产发布 - 状态:已验收 ## 要解决什么 把提交 `6ea45b7` 对应的最新 Admin(包含 #185、#186;#187 为 Client 变更,不进入 Admin 二进制)构建并发布到 `185.216.248.75`,通过 `https://buy.833729.com` 提供服务,同时保留生产数据、配置和上一版本回退能力。 ## 做什么 / 不做什么 - 做:固定 Go 1.23.0 全量验证并构建 Linux amd64、CGO 关闭的单文件二进制。 - 做:发布前备份生产 `autobuy` 数据库,校验 gzip 并限制备份权限。 - 做:上传到独立 release 目录,复用稳定 `config.yaml` 与 `data` 软链接。 - 做:原子切换稳定二进制链接,重启 systemd,验证日志、监听端口、schema 和公网 HTTPS。 - 做:保留当前生产 release 作为应用回退版本,并记录数据库备份路径。 - 不做:不提交或上传本地 `config.yaml`,不修改生产凭据、Nginx、MySQL 权限或业务数据。 - 不做���不在生产执行真实同步、创建任务或真实采购。 ## 怎么做 1. 记录当前 Git 基线和工作区,确保只从已提交源码构建。 2. 从 `admin/` 使用 `GOTOOLCHAIN=go1.23.0` 执行 vet、test,并用 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0` 构建到被忽略的 `.deploy/`。 3. 在服务器使用业务账号 `mysqldump --single-transaction --quick --no-tablespaces` 备份 `autobuy`,启用管道失败检测;设置 600 后执行 `gzip -t`。 4. 新建 `/opt/cmautobuy/releases/6ea45b7/`,上传二进制,核对 SHA-256,建立稳定配置与数据软链接。 5. 停止服务,原子切换 `/opt/cmautobuy/cmautobuy-admin`,启动服务;失败立即回切原 release。 6. 验证 systemd active/enabled、进程实际路径、`127.0.0.1` 监听、启动日志、schema 版本、本机 HTTP 与公网 HTTPS。 ## 验收标准 - [x] 固定 Go 1.23.0 的 vet、test 和 Linux amd64 构建通过。 - [x] 本地和服务器二进制 SHA-256 一致。 - [x] 部署前数据库备份权限为 600 且 `gzip -t` 通过。 - [x] 当前 release 指向 `6ea45b7`,上一 release 保留可回退。 - [x] systemd active/enabled,启动日志无迁移、自检、panic 或 fatal 错误。 - [x] Admin 仅监听预期本机端口,根路径跳转登录页,登录页 HTTP 200。 - [x] `https://buy.833729.com/login` 从服务器和外部网络均返回 HTTP 200。 - [x] 未上传凭据,未执行真实同步、建任务或采购。 ## 怎么验证 本地执行固定 Go 1.23.0 的 vet/test/Linux build 和 SHA-256;服务器执行 `sha256sum`、`gzip -t`、`systemctl is-active/is-enabled`、`readlink`、`ss -lntp`、`journalctl`、只读 schema 查询及 `curl`;外部执行公网 HTTPS 健康检查。 ## 风险和回退 - 风险:新进程启动失败或 schema 自检失败。控制:切换前备份、保留上一 release;启动失败立即回切并重启。 - 风险:生产配置被覆盖或泄漏。控制:只建立既有稳定配置软链接,不打包、不打印配置内容。 - 风险:备份因业务账号权限不足而生成无效文件。控制:使用 `--no-tablespaces`、管道失败检测和 `gzip -t`,失败文件立即删除。 - 回退:应用回切部署前 `readlink` 记录的 release;必要时由数据库管理员使用本次备份恢复数据。 ## 实施记录 - 部署基线:`6ea45b7`。 - 归档提交:`3f5ee83`。 - 归档文档:`docs/task/188-admin打包部署最新版本.md`。 - 二进制 SHA-256:`f8e3bd1e813844a0fc74c7f06ed82d6cddc5e5ffe63faecf9eb4c219b0f17e17`,本地与远端一致。 - 数���库备份:`/opt/cmautobuy/backups/autobuy-before-188-20260812T083428Z.sql.gz`,5,039,803 字节,权限 600,gzip 校验通过。 - 当前运行版本:`/opt/cmautobuy/releases/6ea45b7/cmautobuy-admin`;上一版本 `7e2d33c` 保留。 - 验证结果:systemd active/enabled;监听 `127.0.0.1:18080`;schema v13;本机根路径 303、登录页 200;服务器和外部公网登录页均为 200;启动错误日志计数为 0。 - 未验证:未登录生产账号逐页人工验收,未发起真实同步、采集或采购任务。
Author
Owner

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

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。
ila closed this issue 2026-08-13 15:56:29 +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#188