Files
dingMCP/docs/release-checklist.md
T
gitea-admin a08a2c1a96
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
fix: harden proxied client installation
2026-08-18 16:01:06 +00:00

5.1 KiB
Raw Blame History

发布检查清单

每个候选版必须完成

  • 当前提交位于 main,工作区除明确忽略的本地缓存外干净;版本号、插件版本和 Git 标签一致。
  • npm ci、npm test、npm audit --omit=dev --audit-level=high 全部通过。
  • npm run runtime:verify 确认 Node 官方精确版本源和至少一个国内源同时提供全部六个平台制品,且镜像 SHASUMS256.txt 与仓库固定哈希一致。
  • release:build、test-bundle:build 和 release:verify 成功,SHA256SUMS 校验通过,发行物不包含 .secrets、.runtime、数据库、私钥或机器私有路径。
  • 主下载目录与公开 Gitea Release 的 manifest.json、manifest.sig 和全部附件逐文件哈希一致;模拟主源网络失败/404 后能从备用源完成首次安装和更新,模拟主源返回错误哈希或签名时必须立即停止而不换源。
  • Nginx bootstrap 只开放 ACME challenge;正式站点启用 HSTS,mutable 发行文件返回 no-cache,客户端 tgz 才返回 immutable。连续两次部署时公开目录始终对应一个完整签名清单,旧版本保留数符合策略。
  • 从新生成的公开 install.md 在干净的用户级目录安装,不使用 sudo;安装结果主动返回 postInstall,可发现全部 13 个 MCP 工具。
  • 在未安装 Node 的干净 Windows x64/ARM64、Linux x64/ARM64、macOS Intel/Apple Silicon 用户环境验证平台引导。确认只使用固定精确版本、国内镜像失败会依次回退、任一哈希不符立即终止、私有 Node 不修改 PATH 且更新后仍可启动。至少在实际可用的每类操作系统完成一次端到端安装;其余架构用对应 CI 或发行制品校验覆盖。
  • 在干净 Windows 用户环境用公开教程的 PowerShell 路径完成引导 SHA-256 校验、安装 JSON 解析和 stdio 注册;实际 command 以 .cmd 结尾、args 为空,不含网关 URL,并通过 doctor --json。同时验证路径含空格、连接器信任和完整重启场景。
  • 验证 stdout 只有最终 JSON、stderr 持续包含阶段进度;宿主工具超时设为至少 10 分钟。模拟离线 npm 超时、外部终止留下的死亡锁和 staging、并发第二次安装,分别确认明确失败、安全恢复和零并发写入。Windows 从 Git Bash 发起测试时仍须进入 PowerShell bootstrap,不得直接运行内部安装器。
  • 在 Windows 代理沙箱中验证 HTTPS_PROXY 可供安装下载、登录和 Bridge 使用;父进程含 NODE_OPTIONS="--trace-warnings --use-env-proxy" 与 NODE_USE_ENV_PROXY=1 时,npm 子进程只保留无关 Node 选项并继续保留标准代理变量,离线展开不得卡死。
  • 验证安装结果返回 loginCommand:未加载 MCP 时执行 login --json 能复用现有运行时生成或检查登录链接,不下载发布物;链接过期后生成新链接,已登录时不再返回挑战,未安装时明确失败。
  • 首次安装不等待业务查询即产生一条可传递链接;挑战阶段 onboarding 仍为 pending,授权后的首次成功响应在普通文本中展示一次示例,此后不重复。
  • 授权后钉钉 OA 与薪福通均为 ok,网关重启后登录状态仍可恢复;登录准备暂时失败不会回滚安装或删除原 OAuth 会话。
  • 只读验证待办、本人已处理历史、本人发起历史、历史默认最近 30 天及显式时间窗口、搜索、详情、费用结构化字段、动作、模板 Schema、部门/城市选项和越权拒绝;历史引用必须被动作查询和批处理拒绝。
  • 发票查重验证钉钉/XFT 跨来源精确匹配、弱匹配、用户隔离、状态更新、来源不可用、历史截断、详情失败、并发确认、35 天过期清理和网关重启恢复;数据库不得出现用户 ID、发票原号、审批正文或附件。重复风险和不完整覆盖未获用户确认时不得签发可提交 confirmationId。
  • 真实写操作只执行用户明确授权的样本;任何 outcome_uncertain 都停止,不自动重试。
  • Mock 契约确认网关和 bridge 的批量 Schema 均固定为 20;第 6 个截断引用及任一无效退回目标都会返回 preflight_failed、writesStarted=false,上游写调用数为 0。
  • 代表性 v4 引用长度满足钉钉 OA 不超过 128 字符、薪福通不超过 80 字符,并通过篡改、过期、跨用户、跨密钥、同密钥重启及 v2/v3 兼容测试。
  • 公网 manifest.json 的版本、生成时间和 SHA-256 与当前候选版一致。
  • E2E 脚本在未设置网关地址、未指定业务编号或未加真实写入开关时不会执行审批;只读运行不会自动选取待办。

正式版额外条件

  • 钉钉和薪福通的同意至少各有一个近期真实成功样本,并完成写后复核。
  • 对外开放的拒绝、退回和发起模板具备对应的真实成功样本或明确的客户端/实验性降级说明。
  • 薪福通撤回取得真实成功样本;在此之前必须保留实验性标记,不得作为正式稳定能力承诺。
  • GitHub CI、外部健康检查、OAuth 数据库与密钥成对备份、升级回滚流程均已验证。