forked from wangbo/easyai
41 lines
4.2 KiB
Markdown
41 lines
4.2 KiB
Markdown
# 在线更新发布审计:2026-10-02
|
||
|
||
发布版本:`3.22.0.20261002.2`;Watchtower:`1.22.3`;updater:`1.1.0`。
|
||
|
||
完整源码提交、不可变镜像摘要、验证耗时和部署状态见上级 `online-update-progress-20261002.json`。前后端只追加本次更新改造,发布基线分别为 backend `179d4dae`、web `340c47f8`;现有 Workbench 工作区未参与镜像构建。
|
||
|
||
## 原始问题证据
|
||
|
||
用户原更新请求于 16:55:28 被 Watchtower 接收,前端在 16:55:58 收到旧接口的 30 秒超时包装失败,实际更新在 16:57:12 完成。旧界面因此误报“更新请求未成功提交”。修复前使用未修改的旧后端请求链路复现 30 秒超时,修复后的真实 HTTP 和组件挂载用例覆盖同一边界。
|
||
|
||
## 浏览器实际更新验收
|
||
|
||
| 链路 | 版本变化 | 页面耗时 | 结果 |
|
||
| --- | --- | --- | --- |
|
||
| 旧 Watchtower,无 updater,旧后端接口 | `.1` → `.2` | 61 秒 | 32 秒时仍计时并提示重启;刷新恢复并核对目标版本 |
|
||
| Watchtower 1.22.3,无 updater | `.1` → `.2` | 43 秒 | 异步接收、开始事件、SSE、持久任务及重启后的历史确认 |
|
||
| updater 1.1.0 | `.1` → `.2` | 53 秒 | 六个阶段完成时间、主服务重启及刷新后继续查询 |
|
||
| updater 健康故障与重启恢复 | `.1` → 故障候选 → `.1` | 154 秒 | 实际 HTTP 503、updater 重启恢复同一任务、回退原镜像并恢复健康 |
|
||
|
||
每项均从实际浏览器确认按钮开始,后端、前端镜像发生实际替换,最终版本及核心服务健康均核对。`acceptance/` 包含截图、任务、事件时间线和镜像证据。首次故障镜像仅改入口命令,因 updater 保留原启动配置而未触发失败;最终 `fault-fixture/` 通过替换应用启动文件真实返回 503,此镜像未提升为正式标签。
|
||
|
||
测试站配置文件与备份逐字节一致,已恢复原版本 `3.22.0.20260930.3` 和原镜像;业务数据、`data/update-state` 及新增任务记录保留。测试专用 Compose 使用明确的 updater 与版本检测服务地址,避免动态地址占用业务服务预留地址。
|
||
|
||
## 生产部署
|
||
|
||
`101.200.186.210` 已部署正式候选的同一摘要,保留 `legacy_watchtower` 模式且未安装 updater。公网版本接口确认 `.2`,登录页面实际渲染,后端、前端、网关和 Watchtower 健康,核心服务重启次数为 0。事件与更新令牌独立,事件接口使用更新令牌返回 401,正确事件令牌返回 200;Watchtower 不映射主机端口。
|
||
|
||
原端口、业务卷和 `docker-compose.ice-v1.yml` 保留,ICE 文件 SHA256 为 `1427d181c5d405278e7b9b099379679a91d408108b6737c6cff2ed978f88acc1`。线上没有 Docker 登录配置文件,因此省略该配置的绑定挂载。只合并 Watchtower 配置及核心健康检查;部署脚本与迁移在本仓库正式发布。
|
||
|
||
生产备份:`/home/admin/easyai/data/deployment-backups/online-update-progress-20261002`,配置和容器完整检查结果只在服务器以权限 600 保存。公开审计省略认证信息。
|
||
|
||
正式版本检测仍使用 `https://openapi.51easyai.com`,此服务在另一台服务器,当前仍报告旧版本;同步其版本信息正在等待用户确认范围。指定的生产主机已完成部署,未通过测试版本检测地址覆盖正式配置。
|
||
|
||
## 回退
|
||
|
||
先恢复备份 `.env` 和 `docker-compose.yml`,保持 ICE 文件、业务卷和更新状态目录;按 JSON 中生产前快照的不可变摘要恢复 main、web、Watchtower(网关摘要未变化)。先同步 Watchtower 与后端使用的令牌,再按原 Compose 配置重建上述服务。不得重复提交结果尚待确认的更新任务。`configure-production.py` 保留了本次配置合并方法,不含令牌实际值。
|
||
|
||
## 验证范围
|
||
|
||
Node `22.22.0`、Yarn `1.22.22` 定向验证:真实组件挂载与 30 秒 HTTP 回归 49.42 秒;后端 31 个接口用例和 4 个 MongoDB 4.4 / HTTP / SSE 用例 2.21 秒;后端生产编译 21.02 秒;前端生产构建 441.82 秒;updater 8 个行为用例及构建通过。Bash 与真实 PowerShell 初始化、迁移、部署配置检查通过,逐项耗时见 JSON。未运行全量质量门禁,未用定向通过宣称其他业务功能全部验证。
|