【发布时间】:2017-11-30 20:39:37
【问题描述】:
社会!我需要你的帮助。我是QE,我需要解决一个问题,发生在我身上的事情。我需要找到方法,如何通过一些测试(总测试和失败测试)解析控制台输出,并将其放在我的电子邮件主题上。我试过log parser,不适合我或者我不知道如何使用它
【问题讨论】:
标签: logging jenkins console continuous-integration
社会!我需要你的帮助。我是QE,我需要解决一个问题,发生在我身上的事情。我需要找到方法,如何通过一些测试(总测试和失败测试)解析控制台输出,并将其放在我的电子邮件主题上。我试过log parser,不适合我或者我不知道如何使用它
【问题讨论】:
标签: logging jenkins console continuous-integration
我认为您应该使用不同的方法来解决日志,而不是尝试解析日志。我相信 Jenkins (JUnit) 将测试结果存储为人工制品。我确信有一个插件可以让 Jenkins 在失败时以 HTML 格式将测试结果邮寄给你——事实上我几乎可以肯定 Jenkins 可以开箱即用地做到这一点。
【讨论】:
您可以尝试下载日志,而不是使用 jenkins 插件(使用 .../path/to/build/consoleText 而不是 .../path/to/build/console 来删除时间戳和其他内容)。您可以使用cURL(或wget for linux)将其下载为txt 文件并像解析任何其他纯文本文件一样对其进行解析。
如果你不想下载它,并且你可以在 master 上做事,请参阅this SO answer。
Jenkins 将控制台日志存储在 master 上。如果你想要程序化 访问日志,并且您在 master 上运行,您可以访问 Jenkins 已经拥有的日志,而不将其复制到工件或 必须获取 http 作业 URL。
从 http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Run.html#getLogFile(), 这将返回控制台输出的 File 对象(在詹金斯 文件系统,这是构建输出目录中的“日志”文件)。
在我的例子中,我们使用链式(子)作业对 父作业的构建。
当使用在 Jenkins 中运行的 groovy 脚本时,您会得到一个名为 “构建”运行。我们用它来获取 http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Build.html 对于上游作业,然后调用此作业的 .getLogFile()。
增加奖金;因为它只是一个 File 对象,我们调用 .getParent() 来 获取 Jenkins 存储构建附属文件的文件夹(如测试 xmls, 环境变量,以及其他可能没有明确说明的东西 通过工件暴露)我们也可以解析。
双倍加分;我们还使用矩阵作业。这有时会使 推断系统上的文件路径很痛苦。 .getLogFile().getParent() 带走了所有的痛苦。
【讨论】: