Prhub

#21341 [CI] Add cross-job fast-fail health check (Layer 3)

原始 PR 作者 hnyls2002 合并时间 2026-03-25 07:58 文件变更 5 提交数 13 评论 2 代码增减 +105 / -0

执行摘要

添加跨作业快速失败健康检查,优化 CI 资源使用。

根据PR body描述,目标是实现'zero wasted CI resources',避免当同一阶段已有作业失败时,其他等待作业浪费时间和资源运行完整测试(如安装依赖和测试约30分钟)。这是4层快速失败机制中的第三层'job → job',旨在减少CI执行时间并加快反馈循环。

该PR值得精读,特别是.github/actions/check-stage-health/action.yml文件,展示了CI优化中的设计权衡,如级联过滤和计划运行跳过。工程师可学习如何有效管理CI流水线以减少浪费,关注实现细节以避免类似风险。

讨论亮点

无实质性review讨论,仅作者hnyls2002在Issue评论中展示了测试结果截图,证明级联过滤工作正常,只显示根因作业。

实现拆解

实现分为两部分:

1) 新增composite action文件.github/actions/check-stage-health/action.yml,包含使用GitHub API查询失败作业、级联过滤(排除由健康检查自身引起的失败)和调用core.setFailed()的逻辑;
2) 在五个workflow文件(如pr-test.ymlpr-test-multimodal-gen.yml等)中的21个阶段测试作业后添加该健康检查步骤,确保快速失败。关键设计决策包括使用core.setFailed()使作业显示为失败、自动跳过计划运行(通过context.eventName === 'schedule'检测)、在检出后执行以最小化开销(约2秒)。

文件 模块 状态 重要度
.github/actions/check-stage-health/action.yml CI added 8.0
.github/workflows/pr-test.yml CI modified 7.0
.github/workflows/pr-test-sgl-kernel.yml CI modified 6.0

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

技术风险包括:

1) 健康检查逻辑可能误判,如级联过滤不完全(依赖步骤名匹配)导致错误报告失败作业;
2) 依赖GitHub API,若API调用失败或速率限制可能影响CI执行;
3) 新增步骤增加~2秒开销,对快速失败场景可接受,但需监控性能影响。具体风险点在action.yml的过滤逻辑和API调用部分。

影响范围:所有使用修改后workflow的CI运行,特别是PR测试和计划运行(自动跳过)。影响程度:显著减少CI资源浪费,预计节省大量测试时间(从约30分钟降至~5秒);对用户透明,无功能变更;团队受益于更快反馈循环和更低CI成本。

API 依赖风险 逻辑复杂性 开销增加

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论