Я унаследовал какой-то конвейер Jenkins и пытаюсь его улучшить. Дженкинс и Groovy это довольно свежая тема для меня, так что, скорее всего, я делаю что-то не так. Я использую Jenkins ver. 2.121.3
Основной целью было добавить параметр сборки, чтобы выполнить дополнительную очистку во время сборки. Поэтому я добавил параметр CLEAN_FIRST
с логическим типом и значением по умолчанию false
в конфигурацию задания и сделал что-то подобное в конвейере:
// CLEAN_FIRST = false
// def prefix = CLEAN_FIRST ? "" : "REM"
pipeline {
agent none
stages {
stage('Some step') {
steps {
script {
node('master') {
cleanWs()
try {
def prefix = CLEAN_FIRST ? "" : "REM"
echo "CLEAN_FIRST=$CLEAN_FIRST prefix=$prefix"
bat (label: 'build third party',
script: """
$prefix call cleanSomthing.bat
call doOtherStuff.bat
"""
} finally {
echo "some stuff"
}
} // node
} // script
} // steps
} // stage
} // stages
} // pipeline
Теперь это работает не так, как ожидалось. Префикс «REM» не добавляется.
Отпечатки эха:
CLEAN_FIRST=false prefix=
И bat
вызывает cleanSomthing.bat
, которого я хочу избежать (чтобы сэкономить на времени сборки).
Я пытался сделать prefix
глобальным, но с тем же результатом.
Скорее всего, это вызвано каким-то порядком оценки или проблемой с областями видимости, но я не могу указать на это.
Может кто-нибудь подсказать мне, почему это не работает? Как это исправить?
Ответил на собственный вопрос. Исправлена ли эта проблема в какой-то версии Jenkins?