Jenkins:根据脚本输出发送电子邮件

时间:2016-02-26 02:51:17

标签: jenkins continuous-integration

我有测试自动化框架,测试运行是通过Jenkins驱动的。测试运行完成后,它会生成一些自定义测试报告,如html文件。在报告中,我有一个表的错误总数作为列之一。我基本上想要解析这个html文件,如果错误大于0,就会向邮件列表发送一封电子邮件。

以下是我在Jenkins的工作中所做的事情:

一个。配置作业以运行测试[这是在执行shell选项并运行我的jar,因为测试框架是一个java应用程序]
湾我有一个post构建操作,在其中我执行python代码,执行以下操作:

步骤1.获取最新的HTML报告 第2步。解析此文件。
步骤3.如果错误是> 0:
            然后email_flag = true
        其他:
             email_flag = false。

现在有没有办法可以使用上面的标志并通过Jenkins插件发送电子邮件通知?我只是想了解这样做的最佳方法。任何帮助表示赞赏。

P.S。我做了一些额外的研究,我看到Email-ext插件[https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin]有一个预发送脚本选项,但我只是不知道如何使用它来运行python代码并处理电子邮件消息。< / p>

2 个答案:

答案 0 :(得分:0)

在构建操作期间 - 即在执行测试时,当您知道测试在java中失败时,立即或在执行所有测试之后,您可以让java向shell返回一个值。

System.exit(0) - 成功

System.exit(1) - 失败

每当它不为0时,jenkins作业默认标记为失败。

您可以使用Email-ext插件仅在作业失败时通过选择适当的触发器发送电子邮件 - Failure - Any

enter image description here

答案 1 :(得分:0)

以下是我的Extended Email Publisher Jenkins插件预发送Groovy脚本。希望您能够根据自己的需要进行调整。

它专为解析Serenity-JUnit XML文件而设计,但只需很少的工作就可以解析HTML。它将查找给定<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 中与模式sourceDirPath匹配的任何文件。然后,"SERENITY-JUNIT-*xml"将从file.readToString()中提取测试结果,并将这些结果汇总到变量xmlString中。最后,它将组成tests, passed, failures, errors, skipped并将其附加到msgSubject本身。

请注意,msgbuildlogger是插件提供的对象。您不应该更改分配和/或更改其名称。

脚本:

msg

您当然可以动态更改电子邮件的任何元素(To,From,MsgText等)。在这里,我只是改变主题。

结果如下:

健康检查:确定 - 通过4/4,失败0,错误0,跳过0。