Email-ext插件在发送电子邮件方面效果很好。
要在发送电子邮件之前实现匹配的条件,我发现它具有编写presend脚本的功能。但是我找不到关于如何编写脚本的正确文档。
我的要求:
如果正在部署的分支是master或develop,那么我想使用它 一组电子邮件收件人,或其他一组电子邮件。
为我提供了使用脚本的正确方法
答案 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脚本。