Skip to content

0.8.42 — 部署高可用:窗口关了进度不丢

Choose a tag to compare

@flymysql flymysql released this 09 Oct 10:06
· 171 commits to main since this release

部署高可用:窗口关了,进度不丢

部署改为宿主侧后台任务

install 原来是一条长 HTTP 请求,而 npm 合理地可能跑几分钟。部署过程中窗口一关,响应没了、
进度全丢——用户无法知道装没装成功,再点一次按钮还会对同一个目录并发跑第二个 npm(会损坏
依赖树)。现在部署跑在宿主侧,与任何请求的生命周期解耦:

  • 请求 4ms 返回任务句柄(实测),npm 在后台继续;
  • 每一步的结果实时记录(含正在执行的步骤名),失败时连结构化详情(步骤列表、提示)一起保留;
  • 重新打开窗口即可续看:GET /dsh-remote/web-attach 现在携带部署任务状态,页面轮询第一拍就能捡回进行中的部署;点「部署并验证」也会恢复而不是重启;
  • 一机一次:同一台机器部署中再点一次,返回同一个任务(实测双击并发:第二个 resumed:true、同一个 taskId);不同机器的部署并行(刻意不走全局单飞的 TaskManager);
  • 完成时结果照常落库(webAttachCommand 记到机器上),没有任何人在看也一样;
  • 「部署任务」卡片实时渲染:状态、当前步骤 ▶、逐步 ✓/✗、n/m 计数、取消按钮;完成即出现「继续」入口(连接并打开)。

真实断连验证(E2E,全部通过)

在独立实例 + 真实远端上按用户场景跑:发起部署 → 30 秒完全无人观测(= 窗口关闭)→ 重新打开 →
任务在宿主侧照常跑完(5/5 步全绿)、完整结果与最终命令可读、可再次部署。另外实测双击并发恢复
(sameId:true)。

顺带

  • 新增 install-status / install-cancel 动作;lib/deploy-tasks.js + 7 个单测
    (恢复不重启、并发防护、失败详情存活、协作取消、跨机并行)。