====== Jenkins pipelines ======
===== Agents =====
===== Environment =====
===== Stages (Steps) =====
===== When/IF =====
**IF** условие Groovy\\
stage("first") {
environment {
BB = "True"
}
steps {
script {
if (env.BB == "True") {
println("==== in if ====")
}
}
}
}
===== 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}"
"""
==== Выполнение скриптов ====
:!: Выполнение скрипта и возврат результата в Groovy переменную
isJinja2Cli = sh(
script: """
if jinja2 --version &>/dev/null; then
echo true;
else
echo false;
fi
""",
returnStdout: true)
==== Переменные ====
Нужно экранировать знак **$** при использовании локальных переменных\\
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
"""
}
:!:
:!: