не может напечатать определенную переменную среды внутри шага powershell в jenkinsfile - PullRequest
0 голосов
/ 22 апреля 2020

У меня проблемы с доступом к переменной среды, которую я определил в Jenkinsfile (Groovy). Моя ситуация такова, что я могу получить доступ к переменной на любом шаге за пределами PowerShell '' '' '', но когда я пытаюсь получить доступ к ней внутри PowerShell, то это дает нулевое значение.



pipeline {
     environment {
        APP_BUILD = ''
        BUILD_NUM = ''
        APP_NAME = ''

    }
     agent {
        label 'test'
    }
    stages {
        stage('set env Variables ') {
             steps{
             script {

       APP_BUILD  = "name" 

       echo APP_BUILD
       //prints name which is expected and fine 
       powershell '''
       echo $env:APP_BUILD // does ot print anything
       echo $env:BUILDNUMBER // prints the build number 

       '''
             }
           }
        }
    }
}    

Я пытался найти решение, в котором говорится, что если я использую powershell "" "" "", это может сработать, но тогда я не могу назначить его другой переменной, как показано в коде ниже

pipeline {
     environment {
        APP_BUILD = ''
        BUILD_NUM = ''
        APP_NAME = ''

    }
     agent {
        label 'test'
    }
    stages {
        stage('set env Variables ') {
             steps{
             script {

       APP_BUILD  = "name" 

       echo APP_BUILD
       //prints name which is expected and fine 
       powershell """
       echo ${env:APP_BUILD} // prints output as expected 
       echo $env:BUILDNUMBER // prints the build number 
$build=${env:APP_BUILD} // gives an error saying groovy.lang.MissingPropertyException: No such property: build for class: groovy.lang.Binding 

       """
             }
           }
        }
    }
}    

затем выводится эхо-вывод, но каждый раз, когда я пытаюсь присвоить переменную окружения другой локальной переменной, выдается сообщение об ошибке groovy .lang.MissingPropertyException: такого свойства нет: build для класса: groovy. lang.Binding

Пожалуйста, дайте мне знать, если кто-нибудь сталкивался с подобными ситуациями и решил их.

1 Ответ

0 голосов
/ 22 апреля 2020

Вы должны экранировать символ '$' при обращении к переменным PS, в противном случае Groovy попытается интерполировать:

powershell """
   echo "$APP_BUILD"     # it's simpler to let Groovy interpolate
   echo "$BUILDNUMBER"   # it's simpler to let Groovy interpolate
   \$build="$APP_BUILD"  # need to escape '$' when referring to PS variable
   """
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...