Как установить переменные окружения в конвейере Jenkins Scripted?

#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')
}