使用 TVM 的 CI
TVM 用 Jenkins 在 分支上运行 Linux 持续集成(CI)测试,并通过 Jenkinsfile 中指定的构建配置 pull request。Windows 和 MacOS 的非关键任务在 GitHub Actions 中运行。
本页描述了贡献者和 committer 如何用 TVM 的 CI 来验证代码。可通过 tlc-pack/ci 仓库了解有关 TVM CI 设计的更多信息。
对 Contributor 而言
Jenkins 的 BlueOcean 查看器 中的标准 CI 运行如下所示。 CI 运行通常需要几个小时才能完成 ,并且在 CI 完成之前无法 merge pull request(PR)。要诊断失败的步骤,请单击 failing pipeline stage,然后单击 failing step 来查看输出日志。
调试失败
当 CI 由于某种原因失败时,诊断问题的方法有如下几种。
Jenkins 日志
失败了首先按照失败作业上的红色 X 查看 CI 日志。注意:
- Jenkins 默认不显示完整日志,在日志查看器的顶部有一个“Show complete log”按钮,点击可以查看纯文本日志。
pytest
失败总结在日志的底部,但可能需要向上滚动查看,才能知道失败的实际原因。
重现失败
大多数 TVM Python 测试可以按照 Testing 中的描述在 pytest
下运行。
提交 Issue
在 GitHub 上报告 CI 的 issue,应该提供相 关工作、commit 或 PR 的链接。
对 Maintainer 而言
本节讨论 TVM maintainer 的工作流程。
让 CI 保持正确的流程
本节讨论让 CI 正常运行的一般流程。
同时合并导致 CI 失败
开发者在 merge 前依靠 TVM CI 来获取 PR 的信号。有时,两个不同的 PR 能分别通过 CI,但同时会破坏 main
。反过来,又会导致错误显示在,基于失败 commit 的无关 PR 上。可从 GitHub 的 commit 状态图标或通过 Jenkins 来查找失败的 commit。
这些情况由 committer 负责,也鼓励其他人去帮助他们。这种情况的常见处理方式有:
- 回退有问题的 commit
- 提交一个正向修复以解决问题
选择哪个选项取决于 committer 和 commit 作者。失败的 CI 会影响所有 TVM 开发者,所以应尽快修复。而当 PR 很大时,对其作者来说,回退尤其痛苦。