Prhub

#21015 fix: only showing recent runners from ci failure analysis

sgl-project/sglang · 作者 dougyster · 合并时间 2026-04-01 11:18

分析状态 已生成
文件变更 1提交数 3 · 评论 1
代码增减 +50 / -21
bugfix ci debugging

执行摘要

修复 CI 失败分析脚本,仅使用最近运行数据避免旧 runner 干扰,并添加失败 job 列表用于调试。

根据PR body描述,当前runner状态分析使用了过去100次nightly和PR测试运行的通用数据("general runs"),这会渲染可能已被移除的旧runners("renders old runners that may have been removed"),同时缺乏针对特定runner的详细调试信息。因此,需要缩小数据范围以避免历史数据干扰,并列出所有在给定runner上失败的jobs以辅助调试("for easier runner-specific debugging")。

建议负责CI基础设施或监控的工程师精读此PR,重点关注数据范围缩小的设计权衡(如何平衡历史覆盖与性能),以及新增失败记录功能的实现细节,以借鉴于类似监控脚本优化。

讨论亮点

review中仅有一个来自gemini-code-assist[bot]的评论,它肯定了变更的逻辑性和改进("The change is logical and improves the script's focus.")。没有其他讨论或争议点,变更被快速接受。评论指出数据源变更避免了处理过多历史数据,从而提高了脚本的执行速度和相关性。

实现拆解

实现方案主要包括两个部分:数据源调整和增强输出。首先,在 scripts/ci_monitor/ci_failures_analysis.py 中修改 runner_runs 变量,从使用通用运行数据切换到使用预过滤的计划运行数据(即最近6次nightly计划和12次PR计划运行),以减少历史数据处理量。其次,在 analyze_runner_health 函数中添加 runner_instance_all_failuresrunner_instance_all_failures_in_streak 字典,用于记录每个runner的所有失败信息;在 generate_job_section_md 函数中更新Markdown输出表格,新增 "Failed Jobs" 列并调整表头以显示所有失败job列表。

文件 模块 状态 重要度
scripts/ci_monitor/ci_failures_analysis.py CI Monitoring modified 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

analyze_runner_health generate_job_section_md

评论区精华

数据源变更和改进评估 设计

gemini-code-assist[bot] 评论指出变更将数据源从通用运行切换到计划运行,避免了处理过多历史数据,提高了脚本的聚焦性和执行速度。

结论:变更被接受为逻辑和有益,无争议或修改建议。 · 已解决

风险与影响

技术风险包括:1)数据源变更风险:从过去100次运行缩减到最近18次计划运行,可能导致某些历史失败模式被遗漏,影响分析完整性(例如,如果runner故障在更早时期发生)。2)输出格式变动:更新Markdown表格可能影响下游工具或文档的解析兼容性(如更改了列名和数据结构)。3)性能权衡:虽然减少数据处理量可能提升执行速度,但需确保新数据范围足够覆盖典型CI问题。风险点集中在文件 scripts/ci_monitor/ci_failures_analysis.py 的数据筛选逻辑和输出生成部分。

对用户(工程师)影响:提供更聚焦的runner健康数据和详细失败job列表,便于快速调试CI故障,提升开发体验。对系统影响:CI失败分析脚本运行更高效,减少不必要的数据处理开销;但需监控分析准确性是否因数据缩减而下降。对团队影响:改进CI基础设施的维护效率,与其他CI优化PR协同提升整体稳定性。影响范围限于CI监控模块,程度为中等。

数据源变更风险 输出格式变动

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

  • 一句话:修复CI失败分析脚本,仅使用最近运行数据避免旧runner干扰,并添加失败job列表用于调试。
  • 推荐动作:建议负责CI基础设施或监控的工程师精读此PR,重点关注数据范围缩小的设计权衡(如何平衡历史覆盖与性能),以及新增失败记录功能的实现细节,以借鉴于类似监控脚本优化。

功能与动机

根据PR body描述,当前runner状态分析使用了过去100次nightly和PR测试运行的通用数据("general runs"),这会渲染可能已被移除的旧runners("renders old runners that may have been removed"),同时缺乏针对特定runner的详细调试信息。因此,需要缩小数据范围以避免历史数据干扰,并列出所有在给定runner上失败的jobs以辅助调试("for easier runner-specific debugging")。

实现拆解

实现方案主要包括两个部分:数据源调整和增强输出。首先,在 scripts/ci_monitor/ci_failures_analysis.py 中修改 runner_runs 变量,从使用通用运行数据切换到使用预过滤的计划运行数据(即最近6次nightly计划和12次PR计划运行),以减少历史数据处理量。其次,在 analyze_runner_health 函数中添加 runner_instance_all_failuresrunner_instance_all_failures_in_streak 字典,用于记录每个runner的所有失败信息;在 generate_job_section_md 函数中更新Markdown输出表格,新增 "Failed Jobs" 列并调整表头以显示所有失败job列表。

关键文件:

  • scripts/ci_monitor/ci_failures_analysis.py(模块 CI Monitoring): 唯一变更文件,包含核心CI失败分析逻辑,实现了数据源调整和失败记录增强,直接影响runner健康分析的准确性和输出。

关键符号:analyze_runner_health, generate_job_section_md

评论区精华

review中仅有一个来自gemini-code-assist[bot]的评论,它肯定了变更的逻辑性和改进("The change is logical and improves the script's focus.")。没有其他讨论或争议点,变更被快速接受。评论指出数据源变更避免了处理过多历史数据,从而提高了脚本的执行速度和相关性。

  • 数据源变更和改进评估 (design): 变更被接受为逻辑和有益,无争议或修改建议。

风险与影响

  • 风险:技术风险包括:1)数据源变更风险:从过去100次运行缩减到最近18次计划运行,可能导致某些历史失败模式被遗漏,影响分析完整性(例如,如果runner故障在更早时期发生)。2)输出格式变动:更新Markdown表格可能影响下游工具或文档的解析兼容性(如更改了列名和数据结构)。3)性能权衡:虽然减少数据处理量可能提升执行速度,但需确保新数据范围足够覆盖典型CI问题。风险点集中在文件 scripts/ci_monitor/ci_failures_analysis.py 的数据筛选逻辑和输出生成部分。
  • 影响:对用户(工程师)影响:提供更聚焦的runner健康数据和详细失败job列表,便于快速调试CI故障,提升开发体验。对系统影响:CI失败分析脚本运行更高效,减少不必要的数据处理开销;但需监控分析准确性是否因数据缩减而下降。对团队影响:改进CI基础设施的维护效率,与其他CI优化PR协同提升整体稳定性。影响范围限于CI监控模块,程度为中等。
  • 风险标记:数据源变更风险, 输出格式变动

关联脉络

  • PR #21800 [Misc] Tiny: Add test network timeouts and dynamic max-parallel for 5090/2-gpu runners: 关联原因:同为CI优化相关PR,涉及提升CI稳定性和性能,共享ci和infra标签,体现了仓库在近期持续改进CI基础设施的趋势。
  • PR #21778 Cache nvidia wheels locally to skip repeated 830 MB downloads in CI: 关联原因:同为CI效率改进PR,通过缓存机制减少CI运行时间,与本PR的数据处理优化目标一致,共同提升CI系统整体性能。

参与讨论