根据分支名称选择一个环境变量,并将其值存储到另一个环境变量

时间:2019-11-02 05:14:42

标签: jenkins environment-variables jenkins-groovy

我正在尝试向特定用户发送电子邮件通知,该用户的分支当前在Jenkins构建过程中已签出。为此,我在环境变量中使用了命名约定。

例如

  1. add
  2. master_MAIL = abcd@gmail.com

ABC_MAIL = xyz@gmail.comMASTER是实际的分支名称。

ABC为我提供了当前分支名称已签出的功能。

基于当前分支名称,我必须选择正确的环境变量,并将其值(邮件ID)存储到另一个环境变量。

env.GIT_LOCAL_BRANCH

预期结果是:pipeline { agent any environment { CURRENT_MAIL = "\$${env.GIT_LOCAL_BRANCH}_MAIL" // Here I am trying to pick the specific mail id of the branch being // check out and store it to new environment variable named // "CURRENT_MAIL". // But This gives only the value "$master_MAIL" but not the value // stored in master_MAIL environment variable. } stages { } post { always { mail ( from: "" to: "$CURRENT_MAIL" // Here I have to use that environment variable to send email to // that specific user. subject: "") } } 环境变量应具有CURRENT_MAIL环境变量中包含的值。

例如考虑一下我在配置中设置了以下两个环境变量:

{Branchname}_MAIL

然后,如果当前检出的分支是master_MAIL = abc@gmail.com ABC_MAIL = xyz@gmail.com 分支,则环境变量master的值应为CURRENT_MAIL

1 个答案:

答案 0 :(得分:0)

您需要使用groovy evaluate() helper method来动态评估groovy表达式。

environment {
    CURRENT_MAIL = evaluate(env.GIT_LOCAL_BRANCH + '_MAIL')
    // OR using Groovy GStrings as
    // CURRENT_MAIL = evaluate("${env.GIT_LOCAL_BRANCH}_MAIL")
}