Как передать переменную groovy в powershell в конвейере Jenkins?

#jenkins #groovy

#Дженкинс #groovy

Вопрос:

Я пытаюсь передать переменную groovy в сценарий powershell внутри конвейера jenkins, все в том же месте, но я не знаю как. я пробовал разные способы, но безуспешно.

Мне требуется это, чтобы получить имя пользователя, который одобрил этап КОНВЕЙЕРА, и передать его в powershell, который подключается к SQL SERVER

     stage('Step1'){
      steps{ 
        script{
         def approverDEV
         approverDEV = input id: 'test', message: 'Hello', ok: 'Proceed?', parameters: [choice(choices: 'applenpearnorange', description: 'Select a fruit for this build', name: 'FRUIT'), string(defaultValue: '', description: '', name: 'myparam')], submitter: 'user1,user2,group1', submitterParameter: 'APPROVER'

          echo "This build was approved by: ${approverDEV['APPROVER']}"
        }
      }
    }

stage('Step2'){
  steps{ 
    script{
      powershell ('''
       # Example echo "${approverDEV['APPROVER']}"
       # BUT THIS DOESN'T WORK :(
      ''')
    }
  }
}
  

Я ожидаю, что результатом будет имя утверждающего, хранящееся в переменной GROOVY approverDEV

Комментарии:

1. Строка, заключенная в одинарные кавычки, не вычисляется. Используйте двойные кавычки: """ $a """

2. но проблема не в этом, а в том, как

3. тогда не ясно, в чем проблема…

4. @daggett извините, у вас есть причина. Спасибо!!!

Ответ №1:

Дагетт прав, используйте двойные кавычки вокруг сценария powershell, тогда переменные будут оценены:

 script{
  powershell ("""
   # Example echo "${approverDEV['APPROVER']}"
   # BUT THIS DOESN'T WORK :(
  """)
}
  

Использование тройных двойных кавычек в Groovy называется ‘многострочной GString’. В GString переменные будут оцениваться перед созданием фактической строки.

Комментарии:

1. Спасибо!, у вас есть причина. @daggett. Спасибо

2. у меня другая проблема с тем же. если я объявляю переменную powshell внутри при выполнении задания, у меня возникает следующая проблема: Нет такого свойства: Параметры для класса: WorkflowScript script{ powershell («»» $Params = «Привет, Word!» «»») }

3. Не совсем уверен, но похоже, что переменная не входит в область видимости. Это переменная Groovy? В противном случае вам может потребоваться удалить ее, если она предназначена как переменная powershell.