E2E CI 测试¶
本文档说明如何通过评论命令针对你的 PR 代码触发特定的 E2E 测试,而不运行 PR 选定测试套件。
背景¶
E2E 工作流(pr_test.yaml)在 PR 具有 ready-precise、ready-all、ready-a5 或 main2main 标签之一时,运行 PR 选定的一组测试。main2main 会运行完整测试套件两次,一次针对已验证的 vLLM 主分支提交,一次针对匹配的 vLLM 发布标签。
这会消耗大量 CI 资源和时间。
授权用户可以通过在 PR 上发布 /e2e 评论,仅触发他们关心的特定测试文件。
如何触发¶
1. 发布评论¶
在 PR 上发布评论,指定要运行的测试路径:
- 每个路径都必须是相对于仓库根目录的有效 pytest 路径。
- 可以在单条评论中列出多个路径,以空格分隔。
- 可以使用
::表示法指定特定测试用例。
| 评论格式 | 效果 |
|---|---|
/e2e tests/e2e/pull_request/one_card/test_foo.py |
在 one_card 上运行一个测试文件 |
/e2e tests/e2e/pull_request/two_card/test_bar.py |
在 two_card 上运行一个测试文件 |
/e2e path1 path2 path3 |
运行多个文件,按路径模式路由 |
/e2e tests/e2e/pull_request/one_card/test_foo.py::test_case |
运行特定测试用例 |
评论本身会触发工作流——无需标签。
2. 等待结果¶
GitHub Actions 将触发 Handle /e2e Command 工作流。只有与所提供测试路径匹配的硬件作业会运行,从而节省 CI 资源。
路径路由规则¶
工作流通过
.github/workflows/scripts/test_config.yaml 中的
runner_mapping 正则表达式模式,将每个测试路径路由到正确的硬件运行器。每个模式映射
到一个逻辑分区,该分区会从 runner_label.json 中选择一个精确的运行器标签:
| 路径模式 | 硬件 | 运行器 |
|---|---|---|
路径中包含 two_card |
two_card A3 NPU | linux-aarch64-a3-800t-2 |
路径中包含 four_card |
four_card A3 NPU | linux-aarch64-a3-800t-4 |
one/two_card 下文件名中包含 _310p |
Ascend 310P x1 | linux-aarch64-310p-* |
four_card 下文件名中包含 _310p |
Ascend 310P x4 | linux-aarch64-310p-* |
| 其他所有路径 | one_card A2 NPU | linux-aarch64-a2b3-1 |
当单条评论中列出了多个类别的路径时,每个类别的测试会在其对应硬件上并行运行。
测试路径参考¶
tests/e2e/pull_request/ 目录按硬件类别组织:
tests/e2e/pull_request/
├── one_card/ # Single card tests → A2 NPU x1 runner
├── two_card/ # Two card tests → A3 NPU x2 runner
├── four_card/ # Four card tests → A3 NPU x4 runner
310P 测试使用对应卡目录下 _310p 子目录或 _310p.py 文件名后缀:
tests/e2e/pull_request/one_card/_310p/ # 310P single card
tests/e2e/pull_request/four_card/_310p/ # 310P four card
与 PR 选定测试的对比¶
| 方面 | PR 选定测试(ready-precise / ready-all) |
按测试评论触发 |
|---|---|---|
| 触发方式 | 标签 | /e2e 评论 |
| 范围 | 由精准测试流水线推荐的测试(基于覆盖率 + AST),或在 ready-all 下的完整测试套件 |
仅指定的测试路径 |
| 谁可以触发 | 任何可以添加标签的人 | PR 作者或 write/admin 协作者 |
| 使用场景 | 合并前验证 | 对特定测试的迭代调试 |
示例¶
运行单个 one_card 测试:
运行 two_card 测试:
在一条评论中运行多个硬件类别的测试:
/e2e tests/e2e/pull_request/one_card/test_offline_inference.py tests/e2e/pull_request/two_card/test_data_parallel.py
修复问题后重新触发:只需推送一个新提交。synchronize 事件会重新运行工作流,并自动拾取现有的 /e2e 评论——无需发布新评论。
故障排查¶
在我发布评论后,工作流没有启动。
- 检查评论是否严格以
/e2e开头,后跟至少一个路径,且斜杠前没有前导空格或额外字符。 - 修复问题后重新触发时,只需推送一个新提交——工作流会自动复用现有的
/e2e评论。
测试在错误的硬件上运行。
- 检查路径是否包含预期的目录段(
one_card、two_card、four_card或_310p)。不匹配这些模式的路径默认会路由到 one_card 运行器。
parse-comment 作业因权限错误被跳过。
- 只有 PR 作者或 write/admin 协作者可以使用评论触发。请维护者代为发布
/e2e评论。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend