Что нужно поменять/установить в настройках джоба(item) Jenkins, чтобы каждый второй билд не запускал тесты?
Ответ
Вариант 1
Можно поставить Conditional BuildStep Plugin - он позволяет задавать условие для выполнения отдельного шага сборки. В вашем случае таким условием является четность номера сборки.
По порядку:
Добавляете шаг Conditional step (single) в билд
В качестве условия Run? выбираете Boolean condition
В качестве Token задаете выражение:
${GROOVY,script = "(Thread.currentThread().executable.number) %2 == 0"}
В качестве Builder указываете Invoke Maven 3 и настраиваете ваш обычный maven-билд.
Повторяете шаги 1-4, но задаете условие для нечетности:
${GROOVY,script = "(Thread.currentThread().executable.number) %2 != 0"}
и запускаете maven-билд с флагом -DskipTests=true
PS. У вас так же должны быть установлены Groovy Plugin и Token Macro Plugin, в настройках Jenkins должен быть включен флаг Groovy -> Allow token macro processing
Слышал есть более простой способ, а именно, использовать переменную среды Jenkins - BUILD_NUMBER.
По сути мы и так использовали BUILD_NUMBER, только не через переменные среды, а через API.
Если хотите без обойтись без groovy в голову приходят два варианта:
Вариант 2. Можно взять EnvInject Plugin и перед сборкой инжектить в переменную, скажем $RUN_TESTS, значение $(($BUILD_NUMBER % 2)), что будет давать нам либо 1 либо 0. А в переменную $DONT_RUN_TESTS соответственно противоположное значение: $((1 - $BUILD_NUMBER % 2))
Но это не избавит нас от Conditional BuildStep Plugin. Просто Token-ы поменяются на ${ENV,var='RUN_TESTS'} и ${ENV,var='DONT_RUN_TESTS'}
Conditional BuildStep Plugin вообще всеядный и в качестве true рассматривает значения 1, y, yes, t, true, on, run
Вариант 3. Другой вариант - настроить в самом pom.xml файле проекта средствами maven-а профиль в котором будут глушиться тесты. Пусть он называется no-tests. Теперь все тем же EnvInject-ом заинжектим переменную окружения, например $MVN_PROFILE, которая для четных билдов пустая, а для нечетных - содержит значение -P no-tests, то есть $MVN_PROFILE должна содержат результат вычисления:
$(if [[ $(($BUILD_NUMBER % 2)) -eq 0 ]]; then echo '-P no-tests'; fi )
Комментариев нет:
Отправить комментарий