Prhub

#21334 [CI] Skip multimodal CI for doc-only changes

原始 PR 作者 hnyls2002 合并时间 2026-03-25 05:07 文件变更 1 提交数 7 评论 1 代码增减 +1 / -1

执行摘要

优化 multimodal CI 路径过滤,跳过文档文件变更,减少不必要测试运行。

根据 PR body 描述,修复了如 https://github.com/sgl-project/sglang/actions/runs/23510332416/job/68429326071?pr=19742 所示的不必要 CI 运行,其中仅文档文件变更却触发了 multimodal CI 测试。

建议 CI 维护者和涉及 CI 配置的工程师精读此 PR,以了解 dorny/paths-filter 中路径过滤模式的正确使用方法。关注 extglob 模式 *.!(md|ipynb) 的设计决策,它平衡了灵活性和简洁性。

讨论亮点

Review 评论为空,无外部讨论。但提交历史表明作者自行迭代了过滤模式:首先尝试 !*.md 否定模式,发现因 dorny/paths-filter 的 OR 逻辑而无效;然后改为显式列出代码扩展名(.py, .cu, .cpp 等);最终使用 picomatch extglob 模式 *.!(md|ipynb) 进行验证并确定。

实现拆解

实现方案是修改 .github/workflows/pr-test.yml 文件中的路径过滤规则。关键改动点:将 "python/sglang/multimodal_gen/**" 改为 "python/sglang/multimodal_gen/**/*.!(md|ipynb)",使用 picomatch extglob 模式来排除 .md.ipynb 文件,同时确保其他文件类型(如 .py)的变更仍能触发 CI。提交历史显示作者从初始的否定模式迭代到显式扩展名列表,最终采用 extglob 模式以自动包含新文件类型。

文件 模块 状态 重要度
.github/workflows/pr-test.yml CI/Infrastructure modified 4.0

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

评论区精华

路径过滤模式迭代 设计

作者在提交中尝试了不同的过滤模式以正确排除文档文件,包括初始的否定模式、显式扩展名列表和最终的 picomatch extglob 模式。

结论:使用 `*.!(md|ipynb)` 模式有效排除文档文件并包含其他文件类型。 · 已解决

风险与影响

主要风险是路径过滤模式可能不正确,导致 CI 误触发(运行不必要测试)或漏触发(代码变更未测试)。作者通过测试验证了模式正确性:文档变更时 CI 跳过,代码变更时 CI 触发。此外,extglob 模式 *.!(md|ipynb) 假设所有非文档文件都是代码文件,如果未来添加新文档类型(如 .txt),可能需要更新模式。

对最终用户无直接影响。对开发团队,减少了不必要的 CI 运行次数,提升了开发效率和 CI 资源利用率。具体来说,当仅修改 python/sglang/multimodal_gen/ 目录下的文档文件时,multimodal CI 测试将不再触发,节省时间和计算成本。

路径过滤语法风险 CI 覆盖不完整

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论