如何发送电子邮件到詹金斯的上游收件人列表?

how to send an email to the upstream recipient list in jenkins?

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

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


超级简单的场景...

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

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


复杂场景

是否要传递动态收件人列表?如果是这样,那就更复杂了..

但并非一无所有!如何通过 post ext-email 脚本触发下游构建并将收件人列表作为构建参数向下传递。这样,您所要做的就是将其用作下游作业中的收件人列表。

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

在下游作业中

  1. 添加名为 "UpstreamRecipientList"
  2. 的字符串构建参数
  3. 如果收件人列表中没有虚拟电子邮件,请添加一封虚拟电子邮件。这是为了防止 Jenkins 跳过电子邮件步骤,因为不会有任何电子邮件地址开始(例如,我们稍后会动态设置它)。否则,分机邮件甚至不会费心执行我们的 pre/post 脚本,因为没有任何电子邮件可以发送给它。
  4. 打开 ext-email 插件的 "Advanced Settings" 并将其粘贴到 "Pre-send Script" 中。它将使用 "UpstreamRecipientList" 参数中存储的值更新收件人列表。

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


在上游作业中

  1. 同样,如果您不在上游作业中发送电子邮件,请在收件人列表中添加一个虚拟电子邮件。如果这样做,则不需要执行此操作,因为 post 电子邮件脚本将被触发。
  2. 打开 ext-email 插件的 "Advanced Settings" 并将其粘贴到 "Post-send Script" 中。它将触发传入当前收件人列表的新构建。 请注意,您需要将 "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. 单击 "Add Trigger" 并添加一个 "Always" 触发器。这样每个构建都会执行 post 电子邮件脚本并触发下游作业。