* Объявленые с def являются локальными, доступны в рамках одного стейджа. Объявленые без него, глобальные, доступны на всех стейджах, даже на разных нодах
* Просто переменная не становится переменной окружения. Переменными окружения становятся только объявленые в блоке «environment»
Глобальный блок доступен на всех стейждах и нодах, локальный с-но только в указанном стейдже
Объявление через объект «env.<MY_VAR>« создает переменную окружения причем сразу глобальную
Тип переменной
script { def variable="dcdcd" println variable.getClass() sh "echo ${variable.getClass()}" //println $variable.getClass() - error //println ${variable}.getClass() - error }
Выполнение команд совместно с echo
// Работают все три варианта sh """ echo "`pwd` myvar1 - ${my_var}" echo `pwd`" myvar2 - ${my_var}" echo "\$(pwd) myvar3 - ${my_var}" """
Нужно экранировать знак $ при использовании локальных переменных
sh """
MY_VAR='this is text'
echo \$MY_VAR
"""
Если переменная внутри кавычек то только внутри двойных, в одинарных не раскрывается
sh """
MY_VAR='this is text'
echo "\$MY_VAR"
echo "\${MY_VAR}"
"""
Переменные в подоболочке (выполнение команд с подключением по ssh)
В таком случае доступны только переменные из Groovy, объявленые в блоке «sh» недоступны
script { MY_VAR1="groovy-my-var" sh """ MY_VAR2="shell-my-var" echo "pre - $MY_VAR1 - \$MY_VAR2" ssh user1@1.1.1.1 'echo "$MY_VAR1 - \$MY_VAR2"' # Здесь доступна только $MY_VAR1 """ }