Prhub

#34864 [CI] Path-gate Rust workspace tests in lint

原始 PR 作者 JustinTong0323 合并时间 2026-08-15 13:41 文件变更 1 提交数 1 评论 3 代码增减 +11 / -0

执行摘要

Rust 工作区测试按路径门控,仅相关变更时运行

PR body 明确指出:PR #34860 仅修改文档,但其 lint 任务在精确恢复 390 MB Rust 缓存后仍花费 1m44s 执行 cargo test --workspace,其中测试仅运行 0.47s,test-profile 编译占用了几乎全部时间。仅文档变更和无关 Python 变更不会影响 Rust 工作区,因此应跳过该步骤以节省 CI 时间。

值得快速阅读,是一个标准且可复用的路径门控模式,适合对其他 CI 工作流参考。尤其值得注意的是将 workflow 自身纳入过滤集,使门控变更也能触发完整验证。没有深度技术权衡,不必精读。

讨论亮点

该 PR 没有实质性的讨论评论,审阅者 hnyls2002 直接批准且未留下文字意见。PR 作者在评论区三次使用 /rerun-failed-ci,表明曾重跑失败 CI,但均未附带额外讨论。整体是一个简洁、无争议的基础设施改动。

实现拆解

整个变更集中在 .github/workflows/lint.yml,实现步骤如下:

  1. 新增“Detect Rust workspace changes”步骤,使用 dorny/paths-filter@v3 定义 rust_workspace 过滤器,覆盖 rust/**、proto/sglang/runtime/v1/sglang.proto(rust/sglang-grpc/build.rs 编译所依赖的 proto 来源)以及 .github/workflows/lint.yml 自身。
  2. 为已有的“Run rust/ workspace tests”步骤添加 if: steps.paths.outputs.rust_workspace == 'true' 条件,保留原有 Rust 缓存与 timeout 900 配置不变。
  3. 校验配套:作者在本 PR 上运行了 pre-commit(SKIP=no-commit-to-branch)、对路径过滤器、条件、超时和 Cargo 命令做了 YAML 结构断言,并扫描了 Cargo 路径依赖与 build-script 输入,确保路径集合完整。
  4. 影响:合并后,文档或无关 Python 变更的 lint 运行将完全跳过 1m45s 的 Cargo 测试步骤;而改动 lint.yml 本身或 Rust/proto 相关文件的 PR 仍会执行该步骤,形成自举保证。
文件 模块 状态 重要度
.github/workflows/lint.yml CI 工作流 modified 4.0

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

评论区精华

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

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

风险与影响

主要风险在于路径门控的完整性:若未来 Rust 工作区新增依赖或构建输入文件,而该路径列表未同步更新,可能导致 Rust 变更未被测试而悄悄跳过。此外 dorny/paths-filter@v3 使用可变 tag 而非固定 SHA,存在第三方 Action 被替换的供应链风险;proto 路径 proto/sglang/runtime/v1/sglang.proto 仅覆盖单一文件,后续 proto 结构变化需要维护。整体风险较低,不会影响运行时行为。

影响范围主要在 CI/lint 工作流:对仅文档或无关 Python 变更的 PR,lint 任务将节省约 1m45s 的 Rust 测试时间(该步骤占比最大),提升开发者反馈速度;对 Rust、proto、lint workflow 自身的变更,行为保持不变,仍会执行完整 Rust workspace 测试。该改动不影响任何运行时逻辑、模型行为或 API 兼容性。

路径门控可能漏检 第三方 Action 版本未锁定 依赖路径列表维护

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论