fix(ci): 让质量门禁真正生效 —— 修两处「一直红所以等于没有」,并清零高危漏洞
## 发现 今天 8 次质量门禁运行**全部失败**(从今天第一个 commit 起就没绿过)。 一道长期红的门禁等于没有门禁 —— 没人会看它,也就保护不了任何东西。 两处独立原因: ### ① SCA:audit 打到了镜像 仓库 `.npmrc` 指向 `registry.npmmirror.com`(加速用),但**镜像不实现 audit 接口**, `pnpm audit` 必报 `ERR_PNPM_AUDIT_ENDPOINT_NOT_EXISTS`。 → 显式加 `--registry=https://registry.npmjs.org`。 ### ② typecheck:缺 build 顺序 各包 import 的是 `@nodeagent/protocol` 的**类型产物**(dist/*.d.ts)。 CI 全新检出没有 dist,直接 typecheck 集体报 `TS2307: Cannot find module '@nodeagent/protocol'` —— 而本地因为 dist 还在,看不出来 (典型「本地绿 / CI 红」)。 → 在 typecheck 前插入 `pnpm --filter @nodeagent/protocol build`(只建这一个包,够用且快)。 **注入验证**:把 `packages/protocol/dist` 移走 → 复现 TS2307 → 执行新增的 build 步骤 → typecheck 零错误。(先证明诊断对,再证明修复有效。) ## audit 通了以后暴露 2 个 high(之前被「假绿」掩盖) 1. **node-forge <=1.4.0**(路径 `apps/agent > selfsigned > node-forge`) 上游**无修复版本**(patched_versions: None)→ 只能移除依赖。 `selfsigned` 5.x 已整体改用 `@peculiar/x509` + pkijs,node-forge 被彻底删掉。 - 升级带来两处不兼容:`generate` 改为**异步**、`days` 改为 `notAfterDate` - `ensureCert()` 随之改 async(唯一调用点在 async 的 `main()` 里) 2. **@modelcontextprotocol/sdk <1.31.0**(OAuth 凭据可能被发往 MCP 服务器指定的授权服务器) → 升到 `^1.32.1` ## 证书不能只看编译通过(权威本上一条真机教训) 用临时数据目录起真被控端实测: - 证书 `notBefore=2026-10-17 / notAfter=2036-10-14`(10 年,换算正确) - key.pem 权限仍为 600 - 客户端握手成功:**52 项能力**,验收 **13 通过 / 0 失败** - 审计:`No known vulnerabilities found` 验证:`pnpm typecheck` 通过;`pnpm test:unit` **357 项全绿**; `pnpm install --frozen-lockfile` 通过(lock 与 manifest 一致)。
This commit is contained in:
1 parent
9f95560268
commit
141f479e4a
6 files changed
+253
-33
No files matched your search
@@ -49,7 +49,11 @@ jobs:
|
||||
|
||||
# 依赖漏洞:High 及以上阻断
|
||||
- name: 依赖漏洞扫描(SCA)
|
||||
run: pnpm audit --audit-level=high
|
||||
# ⚠️ 必须显式指定公共 registry(2026-10-17)
|
||||
# 仓库 `.npmrc` 指向 registry.npmmirror.com(镜像加速),但**镜像不实现
|
||||
# audit 接口**,`pnpm audit` 会直接报 ERR_PNPM_AUDIT_ENDPOINT_NOT_EXISTS。
|
||||
# 结果就是这道门禁从加上那天起**一直是红的**,等于没有门禁。
|
||||
run: pnpm audit --audit-level=high --registry=https://registry.npmjs.org
|
||||
|
||||
# ② 质量门禁:类型 + 覆盖率
|
||||
gate:
|
||||
@@ -72,6 +76,15 @@ jobs:
|
||||
|
||||
- run: pnpm install --frozen-lockfile
|
||||
|
||||
# ⚠️ 必须先构建 `@nodeagent/protocol` 再查类型(2026-10-17)
|
||||
# 各包 import 的是 `@nodeagent/protocol` 的**类型产物**(dist/*.d.ts)。
|
||||
# CI 里全新检出、没有 dist,直接 typecheck 会集体报
|
||||
# `TS2307: Cannot find module '@nodeagent/protocol'` —— 而本地因为 dist 还在,
|
||||
# 看不出问题(典型的「本地绿 / CI 红」)。
|
||||
# 只构建 protocol 而不跑全量 build:够用且快,全量 build 留给下一步。
|
||||
- name: 构建 protocol 类型产物
|
||||
run: pnpm --filter @nodeagent/protocol build
|
||||
|
||||
- run: pnpm typecheck
|
||||
|
||||
# 单测 import 的是 dist/(编译产物),必须先构建,否则覆盖率全空
|
||||
|
||||
Reference in new issue
Block a user