Jenkins:根据每个构建步骤发送电子邮件,结果是同一个Jenkins Job

时间:2014-06-05 20:56:52

标签: email jenkins

我只是想知道如何根据同一个Jenkins Job上的每个构建步骤结果发送带有Email-ext plugin的电子邮件。这是我的方案

我的Jenkins工作有3个构建步骤

构建第1步:

   Pull latest code from github and Build the app - Gradle task which build the Jar

构建第2步:

   Run all Tests against that Jar - Gradle Task which runs all Junit tests and provide Report files.

构建后行动:

   If Build step1 fails -> Send email telling Build fails and Console Log with Exception detials

   If Build success and Tests run -> Send email with Test Reports

我想我需要为Email-Ext插件编写预发送脚本。但我不知道如何编写这个脚本。请协助。

2 个答案:

答案 0 :(得分:10)

在正常配置中,如果构建步骤1失败,则构建步骤2将不会执行。

如果构建步骤2(测试)失败,构建将被标记为"不稳定"而不是"失败"。

Email-ext 已经支持这些触发器。

  • 滚动至可修改的电子邮件通知部分。
  • 点击 高级设置... 按钮。
  • 查看触发器部分。
  • 点击 添加触发器 按钮。

您想为" 失败"配置触发器并触发" 不稳定" (你也可能需要触发" 成功")

在你的"失败"触发,在构建失败时写下您想要的电子邮件内容(构建步骤1失败将导致此问题) 在你的"不稳定"触发,在测试用例失败时写下您想要的电子邮件内容 在你的成功"触发,在一切成功并且您想发送测试报告时写下您想要的电子邮件内容。

<强>替代:
或者您可以查看Any Build Step插件(应该允许构建后的操作,例如email-ext,作为构建步骤执行)和 Conditional Build Step 插件(其中允许为每个构建步骤创建条件)。当您想要触发email-ext构建步骤时,将两者结合起来并创建条件。但是我没有试过这个,也不能保证这会有用。

答案 1 :(得分:0)

不要自定义电子邮件分机,而是考虑将工作分成两份工作:

  • 作业1构建并具有此后期构建配置
    • 使用构建其他项目仅在构建成功
    • 时触发
    • 将email-ext配置为仅在发生故障时发送邮件
  • 作业2运行测试并发送邮件

对于这两个作业,将作业参数设置为(作业)/配置/高级项目选项

  • 使用自定义工作区共享同一工作区
  • 在上/下游项目构建时阻止构建以避免覆盖

如果您还希望将测试结果附加到作业1以防其成功,请在作业1中添加后期构建步骤聚合下游测试结果