#jenkins #jenkins-pipeline
#дженкинс #дженкинс-конвейер
Вопрос:
Согласно документам Jenkins, вот как устанавливается глобальная переменная среды для декларативного конвейера:
pipeline {
agent {
label 'my-label'
}
environment {
value = 'World'
}
stages {
stage("Test") {
steps {
sh 'echo Hello, ${value}'
}
}
}
}
Как и ожидалось, на выходе будет «Привет, мир».
Каков правильный способ сделать это в конвейере, написанном по сценарию? Следующее не выдает ошибку, но и не работает:
node('my-label') {
environment {
value = 'World'
}
stage("Test") {
sh 'echo Hello, ${value}'
}
}
Вывод «Привет». Это не так, как ожидалось.
Ответ №1:
Нажмите Переключить конвейер со сценариями по этой ссылке
Jenkinsfile (конвейер со сценарием)
node {
withEnv(['DISABLE_AUTH=true',
'DB_ENGINE=sqlite']) {
stage('Build') {
sh 'printenv'
}
}
}
Ваш скрипт должен выглядеть примерно следующим образом:
node('my-label') {
withEnv(['value=World']) {
stage('Test') {
sh 'echo Hello, ${value}'
}
}
}
Комментарии:
1. А, спасибо. Я также обнаружил, что «env.value=’World’ » также работает.
Ответ №2:
В конвейерах со сценариями (и в разделах сценариев декларативных конвейеров) вы можете устанавливать переменные среды напрямую через глобальный объект «env».
node {
env.MY_VAR = 'my-value1'
}
Вы также можете устанавливать переменные динамически, вот так:
node {
def envVarName = 'MY_VAR'
env.setProperty(envVarName, 'my-value2')
}