Выберите переменную среды на основе имени ветви и сохраните ее значение в другой переменной среды - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь отправить уведомления по электронной почте конкретному пользователю, чья ветвь в настоящее время проверена в процессе сборки Jenkins. Для этого я использовал соглашения об именах в переменных среды.

Например

  1. master_MAIL = abcd@gmail.com
  2. ABC_MAIL = xyz@gmail.com

Где MASTER и ABC являются фактическими именами ветвей.

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 должна иметь значение abc@gmail.com.

1 Ответ

0 голосов
/ 02 ноября 2019

Вам понадобится вспомогательный метод groovy evaluate() для динамической оценки выражений groovy.

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