Pipeline - условное выполнение шагов


#1

Добрый день, Коллеги!
У меня имеется Jenkinsfile отвечающий за сборку и тестирование.
Хочу узнать, возможно ли определить переменную на уровне сборки
К примеру RunTests = false
И чтобы в случае env.RunTests = false шаги с синтаксическим контролем, дым тестами и тестами поведения не запускались.
Либо запускались и сразу завершались.
Попробовал конструкцию
steps{
timestamps {
if(env.RunTests == true)
{
cmd(“vrunner vanessa --pathvanessa ./tools/vanessa-behavior/vanessa-behavior.epf --vanessasettings ./tools/vbParams.json --workspace . --ibname /s${connectionString} --db-user ${env.DatabaseCredentials_Usr} --db-pwd ${env.DatabaseCredentials_Psw}”)
}
}

        }

Но выходила ошибка.
Возможно данную конструкцию можно использовать только в блоке script {}?


#2

Я у себя вот так сделал. Деплой выполняется только в ветке develop… Надо так…

stage(‘Deploy’) {
when {
branch “develop”
}
steps {
timeout(10) {
cmd 'git show -s --format="%%aN">author.txt’
cmd 'git show -s --format="%%B">msg.txt’
cmd ‘vrunner run Bla-bla-lba’
}
}
}


#3

Если пишете полноценный if - то да, его только внутри секции script.
Но посмотрите еще на секцию when. у нее есть вариант работы с произвольным выражением.


#4

Условные делал через when, правда, не для env, а для currentBuild
when {
expression {
currentBuild.result == null || currentBuild.result == ‘SUCCESS’
}
}


#5

Хм. А как сделать пропуск всей цепочки?
Когда обычный pipeline для GitLab можно писать [ci-skip] для пропуска…
А для multibranch не нашел как так сделать? Пробовал кто-нибудь


#6

Емнип плагин был для такого. Название не помню, к сожалению