как передать переменную из сценария powershell на другой шаг?

#powershell #environment-variables #jenkins-pipeline

#powershell #среда-переменные #дженкинс-конвейер

Вопрос:

Я использую Jenkins и конвейерный Jenkinsfile с агентом Windows. Я хочу установить проверяемую из powershell на 1-м шаге и использовать это значение на 2-м шаге после.

мой конвейер:

 def MSVERSION
pipeline {
    stages {
        stage('Clean workspace') {
            steps {
                deleteDir()
            }
        }
        stage('package') {
            steps {
                script {
                    def stdout = powershell(returnStdout: true, script: '''
                        $MSVERSION="1234"
                        write-host "MSVERSION is $MSVERSION"
                    ''')
                    println stdout
                }
            }
        }
        stage('deploy') {
            steps {
                script {
                    bat 'echo MSVERSION is ${MSVERSION}'
                }
                bat 'echo MSVERSION is ${MSVERSION}'
            }
        }
    }
}
 

но мой результат:

 MSVERSION is 1234
MSVERSION is ${MSVERSION}
MSVERSION is ${MSVERSION}
 

Редактировать

Я нахожу работу вслух, но сегодня это не мой вопрос:

в powershell я пишу файл var.propertie:

 set-Content -path "var.properties" -Value "MSVERSION=$($VERSION)"
 

и в моем скрипте я прочитал этот файл var.properties:

 properties = readProperties file: 'var.properties'
echo "MSVERSION is ${properties.MSVERSION}"
 

Ответ №1:

 bat 'echo MSVERSION is ${MSVERSION}'
 

не выполняет интерполяцию строк, но это делает:

 bat "echo MSVERSION is ${MSVERSION}"