Дженкинс: изменить переменную окружения верхнего уровня - PullRequest
0 голосов
/ 17 октября 2018

Я установил переменную среды на верхнем уровне декларативного конвейера с определением agent none.Как я могу изменить его значение на этапах с докер агентами?Мне нужно сохранить измененные значения постоянными среди агентов.

1 Ответ

0 голосов
/ 17 октября 2018

Я только что проверил код ниже, и он работал.Запуск его в Docker не должен иметь никакого эффекта.Верхний уровень «агент никто» также не должен иметь никакого влияния, если он это делает, просто определите очень маленького агента с точки зрения ресурсов на верхнем уровне.

# Define the variable and set it to some value.
myVar = 12
# A function to use in the environment blocks below.
def getVar() {
    return myVar
}
pipeline {
    agent any
    environment {
        # Set the environment variable to the value of the Groovy variable.
        MY_VAR = getVar()
    }
    stages {
        stage("Test1") {
            steps {
                script {
                    # Change the value of the Groovy variable.
                    myVar = 13
                }
                # The environment variable won't change as long as we don't use an environment block to change it.
                sh "echo ${MY_VAR}"
            }
        }
        stage("Test2") {
            environment {
                # Updating the environment variable.
                MY_VAR = getVar()
            }
            steps {
                # And checking that it has been updated.
                sh "echo ${MY_VAR}"
            }
        }
    }
}

Для меня это печатает:

+ echo 12
12
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test2)
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
[Pipeline__all-branches__CI] Running shell script
+ echo 13
13

Таким образом, значение переменной сохраняется между этапами, и вы можете изменить его на любом этапе.

...