Jenkins多个构建的电子邮件通知

79次阅读
没有评论

问题描述

在使用Jenkins进行项目构建时,遇到了一个问题。他有10个不同的产品版本(称为”flavors”),每次提交到代码仓库时,他都需要构建这10个版本(都在同一个工作空间中)。目前他有10个自由风格的构建任务(job),还有一个”master”任务来触发其他任务。他尝试使用Email Extension插件添加电子邮件通知,但是他希望只收到一封包含所有构建结果的电子邮件,而不是10封单独的邮件。他理解他应该改为使用一个多配置项目(multi-configuration project)或一个流水线项目(pipeline project)来处理所有的构建,这样就可以更容易地只触发一封电子邮件通知,但是他想知道如何最佳实践地在多个构建中只收到一封电子邮件通知。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以尝试将电子邮件通知作为构建脚本的一部分来实现。你可以使用ANT构建脚本,并从Jenkins任务中调用电子邮件通知目标,而不是使用电子邮件插件。
以下是一个示例ANT构建脚本的部分内容,用于在构建完成后发送电子邮件通知:

<target name="build">
  <!-- 构建任务的具体操作 -->
</target>

<target name="email-notification" depends="build">
  <!-- 添加电子邮件通知的操作 -->
</target>

在上面的示例中,我们定义了两个ANT目标:buildemail-notificationbuild目标用于执行构建任务的具体操作,email-notification目标用于在构建完成后发送电子邮件通知。你可以在Jenkins任务中调用email-notification目标来触发电子邮件通知。

方案2

使用Join插件来创建一个下游任务,该任务在所有其他任务完成后触发,这样电子邮件任务只会在所有构建完成后触发。
另一种方法是使用Join插件来创建一个下游任务,该任务在所有其他任务完成后触发,这样电子邮件任务只会在所有构建完成后触发。
以下是一个简单的步骤示例:
1. 安装并启用Join插件。
2. 创建一个新的Jenkins任务,作为电子邮件任务。
3. 在其他所有构建任务中添加一个后置操作,将电子邮件任务设置为下游任务。
这样,当所有其他构建任务完成后,电子邮件任务将被触发,并只发送一封包含所有构建结果的电子邮件通知。
请注意,使用”正常”的构建触发器可能会导致问题,因此建议使用Join插件来确保电子邮件任务在所有构建完成后触发。
参考链接:https://stackoverflow.com/questions/25912639/how-to-build-a-jenkins-project-only-when-two-other-projects-have-successfully-be

正文完