#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.