E2E CI 测试#
本文档说明如何通过评论命令针对 PR 代码触发特定的 E2E 测试,而无需运行完整的 E2E 测试套件。
背景#
当 PR 同时具有 ready 和 ready-for-test 标签时,E2E-Full 工作流(pr_test_full.yaml)通常会运行完整的 E2E 测试套件。这会消耗大量的 CI 资源和时间。
授权用户可以通过在 PR 上发布 /e2e 评论,然后添加 ready 标签,仅触发他们关心的特定测试文件。
如何触发#
1.发布评论#
首先,在 PR 上发布一条评论,指定要运行的测试路径:
/e2e [test-path-1] [test-path-2] ...
每个路径必须是相对于仓库根目录的有效 pytest 路径。
可以在单条评论中列出多个路径,使用空格分隔。
可以使用
::表示法来指定特定的测试用例。
评论格式 |
效果 |
|---|---|
|
在 singlecard 上运行一个测试文件 |
|
在 2 卡上运行一个测试文件 |
|
运行多个文件,按路径模式路由 |
|
运行特定的测试用例 |
2.添加标签#
发布评论后,为 PR 添加 ready 标签。添加标签才是实际触发工作流的操作——此时工作流会读取现有评论以找到 /e2e 命令。
备注
只有仓库的贡献者(Triage 角色)和维护者(Write 角色)可以添加标签。如果您没有此权限,请让维护者为您添加标签。您可以通过查看 CODEOWNERS 文件来找到维护者和贡献者列表。
重要
评论必须在添加标签之前发布。如果您先添加标签,工作流将找不到 /e2e 评论,也不会触发任何单测试运行。
备注
此外,只有 PR 作者或具有仓库写入或管理员权限的合作者才能通过评论触发测试。工作流会在继续之前验证评论者的权限。
3.等待结果#
GitHub Actions 将触发 E2E-Full 工作流。只有与提供的测试路径匹配的硬件任务会运行,从而节省 CI 资源。
路径路由规则#
工作流会根据路径模式自动将每个测试路径路由到正确的硬件 runner:
路径模式 |
硬件 |
Runner |
|---|---|---|
路径中包含 |
2 卡 A3 NPU |
|
路径中包含 |
4 卡 A3 NPU |
|
路径中包含 |
Ascend 310P |
|
所有其他路径 |
单卡 A2 NPU |
|
当单条评论中列出了来自多个类别的路径时,每个类别的测试会在其对应的硬件上并行运行。
测试路径参考#
tests/e2e/ 目录按硬件类别组织:
tests/e2e/
├── singlecard/ # Single A2 card tests → singlecard runner
├── multicard/
│ ├── 2-cards/ # 2-card tests → 2-card runner
│ └── 4-cards/ # 4-card tests → 4-card runner
└── 310p/ # Ascend 310P tests → 310P runner
├── singlecard/
└── multicard/
与完整 E2E 套件的对比#
方面 |
完整 E2E 套件 |
按测试评论触发 |
|---|---|---|
触发条件 |
|
|
范围 |
所有 E2E 测试 |
仅指定的测试路径 |
可触发人员 |
任何可以添加标签的人 |
PR 作者或写入/管理员合作者 |
使用场景 |
合入前验证 |
特定测试的迭代调试 |
示例#
运行单个 singlecard 测试:
/e2e tests/e2e/singlecard/test_offline_inference.py
运行 2 卡测试:
/e2e tests/e2e/multicard/2-cards/test_data_parallel.py
在一条评论中跨多个硬件类别运行测试:
/e2e tests/e2e/singlecard/test_offline_inference.py tests/e2e/multicard/2-cards/test_data_parallel.py
修复问题后重新触发:只需推送一个新的提交。synchronize 事件会重新运行工作流并自动获取现有的 /e2e 评论——无需发布新评论。
故障排查#
添加标签后工作流未启动。
确保
/e2e评论是在添加标签之前发布的。如果先添加了标签,请移除它,然后在发布评论后重新添加。检查评论是否以
/e2e精确开头,后跟至少一个路径,斜杠前没有前导空格或多余字符。修复问题后重新触发,只需推送一个新的提交——工作流会自动重用现有的
/e2e评论。
测试运行在了错误的硬件上。
检查路径是否包含预期的目录片段(
2-cards、4-cards或310p)。不匹配这些模式的路径默认会被路由到 singlecard runner。
parse-comment 任务因权限错误被跳过。
只有 PR 作者或具有写入/管理员权限的协作者可以使用评论触发功能。请让维护者代为发布
/e2e评论。