Предотвращение конфликта ресурсов Jenkins в настройке CI - PullRequest
0 голосов
/ 20 сентября 2019

Я реализую стратегию непрерывной интеграции с 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.

Как я могу убедиться, что юнит-тестированиезадание завершено, прежде чем разрешить запуск других развертываний?

Спасибо.Я довольно новичок в Дженкинс, так что не беспокойтесь о деталях.

...