В Jenkins настроены две сборки: buildA
и buildB
.Мои разработчики будут фиксировать и отправлять код на buildA
, и я бы хотел запускать задания сборки на Jenkins на buildB
всякий раз, когда выдается запрос на извлечение на репо buildA
.
Мой Jenkinsfile дляbuildA
довольно просто:
build job: 'buildA', parameters: [gitParameter(name: 'BRANCH', value: env.BRANCH_NAME)]
Это просто вызывает buildB
(фрагмент кода Jenkinsfile ниже):
sh label: "Install dependencies", script: 'pip install -r requirements.txt'
sh label: 'Execute tests', script: "pytest --custom-parameter ${BRANCH}"'
Пока это прекрасно работает.Однако я заметил, что мои тесты выполняются довольно долго, и я хотел бы, чтобы тесты запускались только для запросов на извлечение.До сих пор я определил два варианта, и мне интересно, какой из них лучше:
Вариант 1: Насколько я понимаю, я могу прослушивать только события запроса на извлечение, установив этот параметр.приведенная ниже конфигурация с использованием refspec:
.
Опция 2: Я также слышал, что вы можете использовать env.CHANGE_ID
проверить наличие событий запроса на извлечение.Поэтому мой конвейерный скрипт будет изменен на
script {
if (env.CHANGE_ID) {
sh label: "Install dependencies", script: 'pip install -r requirements.txt'
sh label: 'Execute tests', script: "pytest --custom-parameter ${BRANCH}"'
}
}
Мой вопрос: Какой из этих вариантов предпочтителен для получения имени ветви и построения только на запросах от Git?