2.8 KiB
OpenNexus 生产验收 Runner
scripts/phase3-production-acceptance.py 是第三阶段 A/B/C/D/S/E 验收 ID 的统一入口。它只把仓库登记的逐 ID driver 结果计为生产验收;普通单元测试、隔离冒烟和历史人工汇总不会自动换算成通过。
查看固定的 30 项清单:
python scripts/phase3-production-acceptance.py --list-cases --json
复制 scripts/phase3-acceptance-config.example.json 到仓库外,将占位值改成唯一 run_id 并设置平台 profile。data_root 可直接使用绝对路径,也可像模板一样通过环境变量引用。第一次运行只接受不存在或空目录并写入与 run_id 绑定的隔离标记;后续只能由同一 run 复用。个人 Vault、仓库或 .git 的父目录/子目录、符号链接、含明文密码/令牌的配置均会被拒绝。除用户 Vault 内容外存在未提交源码时也拒绝运行,使 summary 的 commit 可以唯一还原被测代码。HTTP 服务只允许在配置中明确标记为测试服务,URL 不得包含用户信息、query 或 fragment。
执行单例时应使用新的空报告目录:
$env:OPENNEXUS_ACCEPTANCE_DATA_ROOT = 'D:\opennexus-acceptance\run-001'
python scripts/phase3-production-acceptance.py `
--suite sync-service --case S-04 `
--config D:\opennexus-acceptance\run-001.json `
--report-dir D:\opennexus-acceptance\reports\run-001-s04
每个 driver 由仓库内 CASE_DRIVERS 固定登记,接收 --config 与 --output,并通过环境获得 case ID、数据根和报告根。结果必须是 schema 1 JSON,包含匹配的 case_id、PASSED/FAILED/SKIPPED/NOT_APPLICABLE 状态、至少一项独立断言、该 ID 要求的有限非负数值指标,以及 files 和 revisions 清单。只有 driver 退出 0、结果为 PASSED、所有必填指标齐全且结果不含配置引用的秘密值时,该 ID 才通过。缺 driver、必测 skip、非零退出、超时、缺安装包/权限/秘密环境引用、坏 schema、NaN/无穷大指标或秘密命中都会让 suite 非零退出。
报告目录包含 summary.json、case-manifest.json、junit.xml、cases/<ID>.json 和脱敏的 logs/<ID>.log。摘要记录 commit、各锁文件 SHA-256、配置摘要与已提供安装产物摘要。日志将仓库、数据根、报告根、用户主目录和配置声明的秘密值替换为占位符,并限制为 10 MiB。报告目录必须为空,避免单例复跑覆盖原始证据。
当前 runner 与失败闭合行为已实现,A-02/A-03 Sidecar、B-01/B-02 凭据、C-03 沙箱许可、D-01 扩展包、S-01/S-02/S-03/S-08 Sync 客户端以及 S-04/S-05/S-06/S-07/S-09 Sync 服务 driver 已登记;其余 15 个生产验收 ID 尚未登记,运行时会生成 NOT_IMPLEMENTED 证据并退出 1。这用于阻止误报,不是这些用例的验收通过。