Я реализую стратегию непрерывной интеграции с GitHub и Jenkins.Мы уже используем Jenkins для развертывания во многих службах и средах, сборки для которых мы запускаем в веб-интерфейсе.
В репозитории, для которого я реализую CI, есть Jenkinsfile, который выглядит следующим образом:
pipeline {
agent any
stages {
stage('CI') {
steps {
script {
build job: 'Code Deployer',
parameters: [
string(name: 'Application', value:"redacted"),
string(name: 'Environment', value:"ci.stage"),
string(name: 'Refresh_Config', value:"false"),
string(name: 'Branch', value:"${GIT_BRANCH}"),
]
}
script {
build job: 'Unit Tests',
parameters: [
string(name: 'Application', value:"redacted"),
string(name: 'Environment', value:"ci.stage"),
string(name: 'Branch', value:"${GIT_BRANCH}"),
]
}
}
}
}
}
Задания «Развертывание кода» и «Модульные тесты» - это существующие конвейеры Jenkins.
Моя проблема заключается в том, что в GitHub в одно и то же время одновременно открывается 2 или более запросов на запуск, что вызывает запуск более 2 конвейеров..
Первый PR запускает задание «Code Deployer», а второй PR ставит в очередь задание «Code Deployer», которое ожидает завершения первого (хорошо).
За исключением одного раза1-е развертывание завершено, и оно переходит к заданию «Модульные тесты», развертывание для 2-го PR начинается сразу же, изменяя код, тестируемый первым PR.
Как я могу убедиться, что юнит-тестированиезадание завершено, прежде чем разрешить запуск других развертываний?
Спасибо.Я довольно новичок в Дженкинс, так что не беспокойтесь о деталях.