Глобальные переменные среды Jenkins в файле Jenkins

Как вызвать глобальные переменные среды в Jenkinsfile?
Например, если у меня есть переменная -

 name:credentialsId 
 value:xxxx-xxxx-xxxxx-xxxxxxxxx

Как использовать его в groovy script?

Я попробовал ${credentialsId}, но это не сработало. Он просто даст ошибку:

java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, ........

Ответ 1

В файле Jenkins у вас есть Работа с окружением, в котором говорится:

Полный список переменных среды, доступных из Jenkins Pipeline, документируется на localhost: 8080/syntax/globals/enb,

Синтаксис ${env.xxx} как в:

node {
    echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
}

См. также " Управление средой.

Как передать глобальные переменные в файл Jenkins? Когда я говорю глобальные переменные - я имею в виду

Jenkins -> Manage Jenkins -> Configure System -> Global properties -> Environment variables

См. " Настройка переменных окружения"

Настройка переменной среды в Jenkins Pipeline может быть выполнена с помощью шага withEnv, который позволяет переопределить указанные переменные среды для данного блока Pipeline Script, например:

Jenkinsfile (Pipeline Script)

node {
    /* .. snip .. */
    withEnv(["NAME=value"]) {
        ... your job
    }
}

Ответ 2

Когда вы ссылаетесь на env в области Groovy, просто используйте env.VARIABLE_NAME, например, чтобы передать BUILD_NUMBER исходящего задания на запущенное задание:

stage ('Starting job') {
    build job: 'TriggerTest', parameters: [
        [$class: 'StringParameterValue', name: 'upstream_build_number', value: env.BUILD_NUMBER]
    ]
}

Ответ 3

Скриптовый конвейер Чтобы прочитать переменную среды, имя которой вы знаете, используйте env.NAME

Чтобы прочитать переменную среды, имя которой неизвестно до времени выполнения, используйте env.getProperty(name).

Например, значение из файла конфигурации YAML представляет имя переменной среды:

config.yaml (в рабочей области)

myconfig:
  key: JOB_DISPLAY_URL

Jenkinsfile

node {
    println("Running job ${env.JOB_NAME}")
    def config = readYaml(file:'config.yaml')
    def value = env.getProperty(config.myconfig.key)
    println("Value of property ${config.myconfig.key} is ${value}")
}

Ответ 4

Для получения значений подходят env.VAR, env ['VAR'], env.getProperty('VAR').
Для установки значений единственным безопасным способом на данный момент является withEnv. Если вы попытаетесь присвоить значения env.VAR, в некоторых случаях это может не сработать, например, для параллельных конвейеров (как в JENKINS-59871).

Ответ 5

Другим синтаксисом является $ENV: xxxx

node {
echo "Running $ENV.BUILD_ID on $ENV.JENKINS_URL" }

Это сработало для меня