Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Jenkins. Как сделать чтобы каждый второй билд не запускал тесты?

#java #maven #jenkins


Что нужно поменять/установить в настройках джоба(item) Jenkins, чтобы каждый второй
билд не запускал тесты?
    


Ответы

Ответ 1



Вариант 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 )

Комментариев нет:

Отправить комментарий