0

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

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

我的要求:

如果正在部署的分支是主分支或开发分支,那么我想使用一组电子邮件收件人,否则使用另一组电子邮件。

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

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

2 回答 2

1

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

关于你的问题:

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

例子:

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 Plugin,添加步骤“Inject environment variables”并指定之前创建的receiver.txt

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

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

于 2018-05-15T11:50:18.433 回答
1

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

预发送脚本:

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 脚本。

于 2018-05-16T13:29:38.127 回答