SuperAPI AI 工具集

investigating-ci-failures

通用与其它

查看项目

更新于 10-16 03:45

技能介绍

用途:针对一次失败的测试或一次红色 CI 运行,给出可执行的结论——是提问者自己的问题、主干引入的问题,还是 flaky;若为主干引入,则定位罪魁 SHA、作者、PR 以及是否已有修复。全部结论基于已有数据推导,无需重跑 CI。

主要能力:基于两个非物化仓库视图。engineering_analytics_ci_failures 每行对应 CI 日志中的一条 pytest FAILED 行,已预计算指纹(测试 id + 数字/十六进制归一化错误),可按指纹分组得到首次/末次出现、次数与分支分布。engineering_analytics_ci_job_history 每行对应一次 job 尝试,含结论与提交归属(head_sha、作者、提交信息、commit_pr_number),绿色记录只在此处。

使用方式:先用 engineering-analytics-broken-tests MCP 工具做整体分诊,将最近两天失败按指纹分类为 breaking_master、blocking_merge_queue、novel_burst、potentially_resolved、flaky、pr_only,并给出 breaking_master_jobs。再按失败形态处理:单分支为该 PR 自身问题;trunk-merge/pr-<n>/… 门分支为队列同伴或期间落地变更;多分支密集爆发且命中 master 为主干破坏,用边界查询定位首个红色(罪魁)与首个绿色(修复);多分支数天零星出现为 flaky,需用 engineering-analytics-flaky-tests 佐证。

限制:日志仅含失败,无绿色基线,指纹仅支持 pytest(v1),Jest/playwright/cargo 需回退原始日志工具。测试运行前失败的 job 对测试级视图不可见,只能看 job 结论。depot-* runner 的缓存需看 job 自身日志。各数据源新鲜度不同,仓库表可能滞后。日志查询需限定时间(14 天足够),并配合 created_at_raw 粗过滤。重试 run_attempt>1 为同一 job 重跑;revert 的归属跟随 revert PR。输出应先给结论与免责/归责,再列证据,作者仅作事实陈述。