创建结构化的 Jenkins 失败测试报告

Creating a structured Jenkins Failing Test Report

现在的情况:

每个星期一早上,我都会手动检查周末 运行 的 Jenkins 作业 jUnit 结果,使用 Project Health 插件我可以在时间盒 运行 上进行过滤。然后,我将此 table 复制粘贴到 Excel 中,并检查每个测试用例的输出日志以查看失败的原因并记下失败原因。 Excel 每个周末都有另一个标签。所有这些使可追溯性成为一场噩梦,并导致耗时的体力劳动。

我正在寻找的东西(并希望它在某种程度上已经存在):

一个数据库,用于存储我指定的所有作业的所有失败测试。它解析失败测试用例的输出日志,并基于某些正则表达式应用 'tag' 例如'Audio' 如果有关音频的测试失败。由于一切都在数据库中,我可以制作或使用可以随意应用过滤器的前端。

例如,如果我想查看周末有关音频失败的所有测试(多个作业和多个 运行s),我可以 运行 查询 returns 所有带有音频标签的条目。

我可以手动标记失败的测试和原因,以及编写我自己的前端,有没有办法(Jenkins API 可能?)获取失败的测试(jUnit 格式和 Jenkins plugin) 如果不存在,自己创建这样的系统?

好问题。不幸的是,在 Jenkins 中很难获得这样的 "meta statistics" 跨越多个工作。没有现成的解决方案。

基本上,我看到两个选项可以满足您的需求:

  1. Post-处理 Jenkins-内部数据 以获得您需要的统计信息。
  2. 用构建执行数据动态地提供数据库

第一个选项基本上意味着自动执行您现在手动执行的任务。

  • 您可以使用外部脚本(Python、Perl 等)来处理 Jenkins 内部数据(通过 REST 或 CLI API,或直接读取磁盘数据)
  • 或者你 运行 Groovy 内部脚本(这会更快更强大)

这是最直接的方式。但是,根据您需要的统计数据以及您对数据持久性的要求,您可能想要...

第二个选项:更灵活,与 Jenkins 的内部数据存储完全解耦。你可以通过

来实现它
  • 为您的所有作业引入 Groovy post 构建步骤
  • 该脚本解析作业结果并将感兴趣的数据放入自定义的外部数据库

您通过查询该数据库获得的统计数据。

通常,您将从第一个选项开始。一旦需求增长,您将慢慢迁移到第二个(例如,通过显式 post 处理脚本收集内部数据,将其放入数据库,然后对其进行 运行ning 查询)。您需要尽可能缩短此迁移阶段,因为它最终需要努力实现 两个 选项。

您可能想看看 couchdb-statistics。它远非完美契合,但至少似乎部分地完成了您想要实现的目标。