Files

在线更新发布审计: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。未运行全量质量门禁,未用定向通过宣称其他业务功能全部验证。