【问题标题】:Changing the email recipients email based on branch deployed in email-ext plugin根据部署在 email-ext 插件中的分支更改电子邮件收件人电子邮件
【发布时间】:2018-05-15 11:22:55
【问题描述】:

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

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

我的要求:

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

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

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

【问题讨论】:

  • 有两个直接的选项:(1) 使用两个单独的构建,(2) 首选:使用 Jenkins Multibranch Pipeline 构建并将分支特定配置直接提交到相应的分支源代码中
  • @OlegSklyar 但是使用 Multipbranch Pipeline 我们将部署大量分支,因为当有大量开发人员在 master 旁边工作并正确开发时,bitbucket 中可能会有大量分支,因此在这种情况下如果我是正确的,可能会很糟糕
  • 您可以使用正则表达式来排除工作规范中不需要的所有分支。我们使用它来包含所有发布分支 + master + dev,但排除所有功能分支。当然,您可以找到适合您的正则表达式

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


【解决方案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 插件,添加步骤“注入环境变量” 并指定之前创建的 recipient.txt

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

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

【讨论】:

  • 我在 jenkins 的构建后操作步骤中找不到选项 execute shell。使用 ENVInject 插件也可能不安全,因为警告清楚地显示在其安装页面上
【解决方案2】:

看起来很复杂,但我是这样解决的:

预发送脚本:

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

【讨论】:

    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2016-08-14
    相关资源
    最近更新 更多