Email-ext 插件在 发送电子邮件时效果很好。
为了在发送邮件前实现条件匹配,我发现它具有编写发送脚本的功能。但是我找不到有关如何编写脚本的正确文档。
我的要求:
如果正在部署的分支是主分支或开发分支,那么我想使用一组电子邮件收件人,否则使用另一组电子邮件。
为我提供使用脚本的正确方法
- 我们可以在那里写 bash 脚本吗
- 我们可以将 bash 脚本中设置的变量用于 presend 脚本吗
Email-ext 插件在 发送电子邮件时效果很好。
为了在发送邮件前实现条件匹配,我发现它具有编写发送脚本的功能。但是我找不到有关如何编写脚本的正确文档。
我的要求:
如果正在部署的分支是主分支或开发分支,那么我想使用一组电子邮件收件人,否则使用另一组电子邮件。
为我提供使用脚本的正确方法
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}
看起来很复杂,但这就是我解决它的方法:
预发送脚本:
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 脚本。