根据部署在email-ext插件

时间:2018-05-15 11:22:55

标签: jenkins jenkins-plugins jenkins-email-ext

Email-ext插件在发送电子邮件方面效果很好。

要在发送电子邮件之前实现匹配的条件,我发现它具有编写presend脚本的功能。但是我找不到关于如何编写脚本的正确文档。

我的要求:

  

如果正在部署的分支是master或develop,那么我想使用它   一组电子邮件收件人,或其他一组电子邮件。

为我提供了使用脚本的正确方法

  1. 我们可以在那里写bash脚本吗
  2. 我们可以将bash脚本中设置的变量用于presend脚本

2 个答案:

答案 0 :(得分:0)

2)你可以使用你想要的任何变量,Jenkins env变量或你在“env inject”插件的帮助下添加的任何变量。

关于你的问题:

  

如果正在部署的分支是掌握或开发,而不是我想使用一组电子邮件收件人,那么其他一组电子邮件

示例:

1)在后期构建操作中执行shell步骤

if [ $BRANCH == "develop" ];then
   echo DEV_RECIPIENTS=dev1@mail,dev2@mail,dev3@mail > recipient.txt
else
   #assuming only master branch is left
   echo MASTER_RECIPIENT=master@mail,master2@mail > recipient.txt
fi

2)使用EnvInject插件,添加“注入环境变量”步骤     并指定先前创建的recipient.txt

现在您可以使用DEV_RECIPIENT或MASTER_RECIPIENT(取决于分支构建) 通过$ {DEV_RECIPIENT}或$ {MASTER_RECIPIENT}

3)只需将此变量粘贴到extEmail步骤字段“收件人列表”中:$ {DEV_RECIPIENT}

答案 1 :(得分:0)

看起来很复杂,但这就是我解决它的方法:

预发送脚本:

if ("develop"=="${BRANCH_TAG_NAME}" || "master"=="${BRANCH_TAG_NAME}") {
          recipients = msg.getRecipients(javax.mail.Message.RecipientType.TO)
          msg.setRecipients(javax.mail.Message.RecipientType.TO, "email1,email2")
        }

     else{
recipients = msg.getRecipients(javax.mail.Message.RecipientType.TO)
msg.setRecipients(javax.mail.Message.RecipientType.TO,"email2,email3")
    }

<强>其中:

BRANCH_TAG_NAME是分支名称,其值在bash脚本中设置。看起来我们可以轻松地将bash脚本中定义的变量访问到preSend脚本。