Я пишу декларативный конвейерный сценарий Jenkins со скриптом powershell внутри.Когда я пытаюсь получить значение переменной среды внутри powershell, я получаю ее «исходное» значение, определенное в блоке environment
, а не значение, установленное на предыдущем этапе.Блок withEnv
тоже не работает.Пример:
pipeline {
agent any
environment { TEST_ENV_VAR = "0" }
stages {
stage('stage1') {
failFast true
parallel {
stage('stage1.1') {
steps {
script {
TEST_ENV_VAR = "1"
}
}
}
}
}
stage('stage2') {
failFast true
parallel {
stage('stage2.1') {
steps {
echo "$TEST_ENV_VAR" // prints "1"
withEnv(["inv_var = $TEST_ENV_VAR"]) {
withCredentials([usernamePassword(credentialsId: "$CredentialsID", passwordVariable: 'password', usernameVariable: 'srvUser')]) {
echo "$TEST_ENV_VAR" // prints "1"
echo "$env.inv_var" // prints "null"
powershell label: 'pshell', returnStatus: true, script: '''
echo "$env:TEST_ENV_VAR" # prints "0"
echo "$env:inv_var" # prints nothing
'''
}
}
}
}
}
}
}
}