由 Sheriff 处理的间歇性故障

Firefox Sheriff 团队查看 Treeherder 中默认可见的所有任务(1 级和 2 级)的故障,这些任务是 Sheriff 处理的树(autoland、mozilla-central、mozilla-beta、mozilla-release、mozilla-esr 树)上的推送的一部分,并确定故障是回归还是间歇性故障。对于间歇性故障,Sheriff 会对故障进行注释,并在 Treeherder 中记录该注释。

在大多数情况下,Sheriff 会确定是否需要新的 Bug 或现有 Bug 已经跟踪此类故障。在大多数情况下,Sheriff 会使用“单一跟踪 Bug”对故障进行注释,在其他情况下,将会有单独跟踪的特定故障。

单一跟踪 Bug

单一跟踪 Bug 用于跟踪在 CI 中看到的测试故障。这些故障是在测试用例级别(通常是路径/文件名)而不是错误消息级别进行跟踪的。我们发现,很多时候我们有 >1 个 Bug 跟踪测试用例上的故障,但没有一个 Bug 频繁到足以引起测试所有者的注意。此外,当开发人员正在调查修复间歇性故障时,他们正在调试文件,并且能够在一个地方查看所有相关的故障非常有用。

有两种方法可以获取有关测试故障的详细信息

  1. Treeherder,在查看特定问题时,有一个表格,在表格的最右侧是标题为 Log 的列。如果单击其下方的文本框,将填充所有故障类型的下拉列表,选择一个故障将过滤该故障以查看日志等。

  2. mach test-info,可以查看所有故障及其发生位置的细分(例如: ./mach test-info failure-report --bugid 1781668

单一跟踪 Bug 的工作流程如下

  • Sheriff 在 CI 中发现新的故障并创建新的 Bug。如果 Treeherder 可以找到路径,Treeherder 将推荐一个 single tracking bug 并删除错误消息。

  • 如果要注释的故障具有测试路径,并且在 Bug 建议列表中存在 single tracking bug,Sheriff 将注释现有 Bug。只要测试路径匹配(以及其他标准,如崩溃、断言、泄漏等),Treeherder 将提供该选项作为选择。

  • 如果发生足够多的故障(目前每周 30 次故障等),Sheriff 将需要信息并对所有者进行分类。

  • 开发人员将能够调查故障集,以及他们修复的任何特定 Bug(针对某些或所有条件)。最佳实践是使用 single tracking bug 作为元 Bug,并提交一个新的 Bug 来阻止具有特定修复的元 Bug。