Вы не можете переопределить переменную среды, определенную в блоке environment {}
.Однако есть один трюк, который вы можете использовать.Вы можете ссылаться на ACC
переменную окружения двумя способами:
- явным образом
env.ACC
- неявным образом
ACC
Значениеenv.ACC
нельзя изменить после установки в блоке environment {}
, но ACC
ведет себя следующим образом: если переменная ACC
не установлена, то значение env.ACC
становится доступным (если, конечно, существует).Но когда переменная ACC
инициализируется на любом этапе, ACC
ссылается на это вновь установленное значение на любом этапе.Рассмотрим следующий пример:
pipeline {
agent any
environment {
FOO = "initial FOO env value"
}
stages {
stage("Stage 1") {
steps {
script {
echo "FOO is '${FOO}'" // prints: FOO is 'initial FOO env value'
env.BAR = "bar"
}
}
}
stage("Stage 2") {
steps {
echo "env.BAR is '${BAR}'" // prints: env.BAR is 'bar'
echo "FOO is '${FOO}'" // prints: FOO is 'initial FOO env value'
echo "env.FOO is '${env.FOO}'" // prints: env.FOO is 'initial FOO env value'
script {
FOO = "test2"
env.BAR = "bar2"
}
}
}
stage("Stage 3") {
steps {
echo "FOO is '${FOO}'" // prints: FOO is 'test2'
echo "env.FOO is '${env.FOO}'" // prints: env.FOO is 'initial FOO env value'
echo "env.BAR is '${BAR}'" // prints: env.BAR is 'bar2'
script {
FOO = "test3"
}
echo "FOO is '${FOO}'" // prints: FOO is 'test3'
}
}
}
}
И, как вы можете видеть в приведенном выше примере, единственное исключение из правила - если переменная окружения инициализируется вне блока envrionment {}
.Например, env.BAR
в этом примере было инициализировано в Stage 1
, но значение env.BAR
можно изменить в Stage 2
, и Stage 3
увидит измененное значение.