Использование Pipeline plugin in Jenkins 2.x, как я могу получить доступ к переменной Groovy, которая определена где-то на уровне сцены или узла с помощью этапа sh
?Доступ к переменной Groovy с шага оболочки в конвейере Jenkins
Простой пример:
node {
stage('Test Stage') {
some_var = 'Hello World' // this is Groovy
echo some_var // printing via Groovy works
sh 'echo $some_var' // printing in shell does not work
}
}
дает следующее на странице вывода Дженкинс:
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test Stage)
[Pipeline] echo
Hello World
[Pipeline] sh
[test] Running shell script
+ echo
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Как можно видеть, echo
в sh
шаге печатает пустую строку.
обходным бы определить переменную в объеме среды через
env.some_var = 'Hello World'
и распечатать его с помощью
sh 'echo ${env.some_var}'
Однако, такого рода нарушений окружающей среды области действия для решения этой задачи.
Возможный дубликат [Что разница строк в одинарные или двойные кавычки в заводной?] (Http://stackoverflow.com/questions/6761498/whats-the-difference-of-strings-within-single -или-double-quotes-in-groovy) –
Не совсем дубликат, но я думаю, что просто использовать правильные цитаты. В примерах, приведенных на связанной вами странице, используются двойные кавычки: https://jenkins.io/doc/book/pipeline/overview/#basic-groovy-syntax-for-pipeline-configuration –
Действительно, спасибо, что указали это. Должно было выглядеть более тщательно ... при использовании двойных кавычек интерполяция работает так, как ожидалось. Вы можете добавить это как ответ, если хотите. – Dirk