如何向jenkins的上游收件人列表发送电子邮件?

时间:2016-09-11 08:03:06

标签: jenkins continuous-integration email-ext

我想知道如何从下游版本向上游收件人列表发送电子邮件? 有一个选项可以将电子邮件发送到上游git提交者,但它不是我想要实现的。

1 个答案:

答案 0 :(得分:0)

嗯...取决于你想要做什么,可能相当复杂.. 超级简单 ......

超级简单的场景......

您是否只想将其发送到同一个静态列表?

然后,您只需在上游和下游作业中键入相同的收件人列表,即可将其发送到相同的列表。 :)

复杂的情况

想要传递动态收件人列表吗?如果是这样,那将会更复杂..

但一切都不会丢失!如何通过post ext-email脚本触发下游构建并将收件人列表作为构建参数传递下来。这样,您只需将其用作下游作业中的收件人列表。

以下是您需要为此方法执行的步骤的细分:

在下游工作中

  1. 添加名为“UpstreamRecipientList”的字符串构建参数
  2. 如果已经存在虚拟电子邮件,则在收件人列表中添加虚拟电子邮件。这是为了防止Jenkins跳过电子邮件步骤,因为没有任何电子邮件地址可以开始(例如我们稍后动态设置它)。否则,ext电子邮件甚至不会执行我们的前/后脚本,因为没有任何电子邮件要发送给它们。
  3. 打开ext-email插件的“高级设置”并将其粘贴到“预发送脚本”中。它将使用存储在“UpstreamRecipientList”参数中的值更新收件人列表。

    msg.setRecipients(javax.mail.Message.RecipientType.TO, build.buildVariableResolver.resolve("UpstreamRecipientList"))

  4. 在上游工作中

    1. 如果您不在上游作业中发送电子邮件,请再次在收件人列表中添加虚拟电子邮件。如果这样做,则无需执行此操作,因为将触发发布电子邮件脚本。
    2. 打开ext-email插件的“高级设置”并将其粘贴到“发送后脚本”中。它将触发在当前收件人列表中传递的新构建。 请注意,您需要将“myDownstreamJob”字符串替换为调用下游作业的任何内容!

      jenkins.model.Jenkins.instance.getItem("myDownstreamJob").scheduleBuild(5, new hudson.model.Cause.UpstreamCause(build), new hudson.model.ParametersAction([ new hudson.model.StringParameterValue( "UpstreamRecipientList", msg.getRecipients(javax.mail.Message.RecipientType.TO).join(",") ) ]));

    3. 点击“添加触发器”并添加“始终”触发器。这样每个构建都将执行post email脚本并触发下游作业。