Как использовать дросселирование параллельных сборок в декларативных конвейерах Jenkins

У меня есть декларативные конвейеры Jenkins для нескольких различных репозиториев, запускающих обновление базы данных, и модульные тесты, зависящие от базы данных. Эти задания Jenkins запускаются запросами на вытягивание в GitHub.

Чтобы избежать конфликтов ресурсов, мне нужно предотвратить одновременное выполнение этих заданий - как в рамках каждого проекта, так и между проектами.

Плагин "Throttle Concurrent Builds", кажется, создан для этого.

Я установил плагин и настроил такую ​​категорию:

Конфигурация системы TCB

И я добавил параметр "throttle" в Jenkinsfile в одном из репозиториев, сборки которого должны быть ограничены:

pipeline {

    agent any

    options {
        throttle(['ci_database_build'])
    }

    stages {
        stage('Build') {
            parallel {
                stage('Build source') {
                    steps {

                        // etc etc...

Однако это не мешает одновременному выполнению 2 заданий. В качестве доказательства здесь одновременно выполняются 2 задания (оба содержат указанное выше изменение Jenkisfile):

«Одновременно

Что мне не хватает?


person amacrobert    schedule 24.03.2020    source источник
comment
Вы тем временем нашли решение?   -  person nogenius    schedule 25.08.2020
comment
@nogenius Я не нашел решения проблемы дросселирования, но я реализовал решение более широкой проблемы коллизии базы данных: каждое задание создает новую базу данных со случайным именем, настраивает код для использования этой базы данных, а затем удаляет базу данных на этапе post {always {}} конвейера. Это дает дополнительное преимущество, позволяя выполнять несколько заданий одновременно, сохраняя при этом разделение ресурсов.   -  person amacrobert    schedule 25.08.2020
comment
Какая жалость (для меня) - но для вас это хорошо. Рад, что ты нашел решение   -  person nogenius    schedule 25.08.2020


Ответы (1)


Следующее в блоке опций должно работать

options {
    throttleJobProperty(
        categories: ['ci_database_build'],
        throttleEnabled: true,
        throttleOption: 'category',
    )
}

Полный синтаксис можно увидеть здесь: https://github.com/jenkinsci/throttle-concurrent-builds-plugin/pull/68)

person nogenius    schedule 26.08.2020
comment
Хороший! Искал этот блок больше 6 часов. Небольшая поправка, последняя строка не должна заканчиваться на, - person user2170023; 19.10.2020