====== Jenkins pipelines ====== ===== Agents ===== ===== Environment ===== ===== Stages (Steps) ===== ===== When ===== ===== Scripts ===== ==== Переменные ==== * Объявленые с **def** являются локальными, доступны в рамках одного стейджа. Объявленые без него, **глобальные**, доступны на всех стейджах, даже на разных нодах\\ * Просто переменная **не становится переменной окружения**. **Переменными окружения** становятся только объявленые в блоке **"environment"**\\ **Глобальный** блок доступен на всех стейждах и нодах, **локальный** с-но только в указанном стейдже\\ Объявление через объект **"env."** создает переменную окружения причем сразу **глобальную**\\ **Тип переменной** script { def variable="dcdcd" println variable.getClass() sh "echo ${variable.getClass()}" //println $variable.getClass() - error //println ${variable}.getClass() - error } ===== Sh ===== Выполнение команд совместно с **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 """ }
:!:
:!: