Дженкинс делится общими переменными среды в методе - PullRequest
0 голосов
/ 28 декабря 2018

Я создаю декларативный JenkinsFile, у меня есть некоторые общие переменные, которые я хочу использовать в некоторых проектах и ​​заданиях Jenkins.Поэтому я создал разделяемую библиотеку jenkins, но по какой-то причине я не могу получить свой файл Jenkins для чтения общих переменных среды из общего groovy.

pipeline {
   environment {
      commonEnv()
      Email_Notification_Enabled="true"
      Slack_Notification_Enabled="false"
   }
}

и в моем groovy у меня было:

def call() {
    a = "abc"
    b = "abc"
}

Выдает ошибку, что commonEnv () не разрешен в средах.Каков возможный способ достижения такого поведения.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Вы можете написать метод Groovy, который устанавливает общие переменные среды.Пожалуйста, обратитесь к этому вопросу переполнения стека , чтобы узнать, как это сделать.Включите этот метод в разделяемую библиотеку Jenkins.

Теперь вызовите этот метод Groovy в декларативном конвейере каждой вашей работы.Помните, что в декларативном конвейере вы можете использовать Groovy только внутри шага script.Итак, ваш конвейер будет выглядеть примерно так:

    pipeline {    
        stages {    
            stage("First stage") {      
                steps {
                    script {
                        // call to Groovy method that sets environment variables
                    }                        
                    // other steps
                }
             }
             // other stages
        }
    }

Надеюсь, это поможет.

0 голосов
/ 29 декабря 2018

Поскольку вам нужны переменные среды, которые совместно используются всеми проектами и заданиями Jenkins, вы должны настроить их на уровне Jenkins instance , а не на проекте Jenkins или Работа уровень.Таким образом, вместо того, чтобы делать это в Jenkinsfile (который будет делать это на уровне задания Jenkins), я сделаю это в Управление Jenkins > Настройка системы > Глобальные свойства > Переменные среды :

JenkinsЗатем переменные среды можно прочитать в конвейерном скрипте из Глобальная переменная Jenkins env :

echo "This is my Jenkins global environment variable ${env.MY_ENV_VAR_NAME}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...