Prhub

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

sgl-project/sglang · 作者 hnyls2002 · 合并时间 2026-03-25 05:07

分析状态 已生成
文件变更 1提交数 7 · 评论 1
代码增减 +1 / -1
ci documentation

执行摘要

优化 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 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

本 PR 通过修改 CI 工作流路径过滤规则,排除了 multimodal 目录下的文档文件(.md/.ipynb)从触发 CI 测试,优化了 CI 效率,减少资源浪费。

功能与动机

为什么做:修复仅修改文档文件时触发不必要 CI 运行的问题。根据 PR body,例如在 PR #19742 中,仅文档变更却导致了 multimodal CI 测试的运行,浪费了 CI 资源。目标是提升开发流程效率。

实现拆解

做了什么

  • 修改文件:.github/workflows/pr-test.yml
  • 关键变更:将路径规则从 "python/sglang/multimodal_gen/**" 改为 "python/sglang/multimodal_gen/**/*.!(md|ipynb)"
  • 技术细节:使用 dorny/paths-filter 的 picomatch extglob 模式 *.!(md|ipynb),排除 .md.ipynb 文件,同时自动包含其他文件类型(如 .py.cu 等)。
  • 迭代过程:提交历史显示作者从初始否定模式(无效)改为显式扩展名列表,最终采用 extglob 模式,并通过测试验证。

评论区精华

讨论了什么

  • Review 评论为空,无外部讨论。
  • 但提交历史揭示了内部设计权衡:作者尝试了不同过滤模式,最终选择 extglob 模式以平衡灵活性和维护性。
  • 引用提交消息:"[CI] Use picomatch extglob to exclude doc files from multimodal filter Replace explicit extension whitelist with picomatch extglob negation *.!(md|ipynb) so any new code file type is automatically included."

风险与影响

风险

  • 路径过滤模式语法错误:可能导致 CI 误触发或漏触发,已通过测试验证。
  • CI 覆盖不完整:如果未来添加新文档类型(如 .txt),当前模式可能不排除,需要手动更新。

影响

  • 对团队:减少不必要的 CI 运行,提升开发效率,节省计算资源(如 GPU 时间)。
  • 对系统:CI 流程更精准,仅当代码变更时触发相关测试,避免文档更新引入额外开销。

关联脉络

与历史 PR 的关系

  • PR #20430:为 MOVA 模型添加 multimodal CI 测试,与本 PR 优化同一目录的 CI 触发规则,共同提升 diffusion 模块的 CI 流程。
  • 整体趋势:近期多个 PR(如 #21239、#21285)涉及 CI 优化,表明团队正在重构和精细化 CI 配置,以提高测试效率和可靠性。

参与讨论