SuperAPI AI 工具集

openvmm-ci-investigation

部署与运维

查看项目

更新于 10-16 06:47

技能介绍

用途:当 OpenVMM 的 PR 出现 CI 检查失败时,用该技能定位并诊断失败原因,避免手动查询 GitHub API 或逐个下载产物。

主要能力:脚本会自动把 PR 解析到其 head commit 的所有失败 CI 运行(同一 commit 可能有多个工作流,如 OpenVMM PR 与 OpenVMM Docs PR,需逐个查看;每个工作流只取最新运行);识别失败 job;下载 *-unit-tests-junit-xml 并解析 JUnit XML 中的单元测试失败;下载 *-vmm-tests-logs 并查找 petri.failed 标记、提取 ERROR/WARN 行;若无测试或 JUnit 产物(构建/fmt/clippy 失败),则显示失败 job 日志尾部。

使用方式:优先运行 python3 repo_support/investigate_ci.py(当前分支 PR 无需参数),也可传 PR 号或 run ID,例如 python3 repo_support/investigate_ci.py 2946 或 python3 repo_support/investigate_ci.py 23017249697。输出按 # RUN n of m 分段,需全部查看。先依据日志、测试代码和错误信息诊断;仅在无法从日志判断时,询问用户是否本地复现,且仅能在相同架构上复现,需加载 vmm-tests 技能并使用 cargo xflowey vmm-tests-run,不要直接用 cargo nextest run -p vmm_tests。

产物与常见失败:单元测试产物为 {platform}-unit-tests-junit-xml;VMM 测试产物为 {platform}-vmm-tests-logs,目录内含 petri.jsonl(主日志)、petri.log、petri.test、petri.passed/petri.failed 及 openhcl.log、hyperv.log、openvmm.log、guest.log、uefi.log 等。常见模式包括单元测试失败、fmt/clippy 失败、文档失败、TripleFault、超时、guest 断言失败、构建失败。结果可在 https://openvmm.dev/test-results/#/runs/<RUN_ID>_<RUN_ATTEMPT> 查看。注意 gh run view --json artifacts 不存在,列产物需用 gh api repos/microsoft/openvmm/actions/runs/<RUN_ID>/artifacts。