Как я могу эффективно выполнять параллельные задания с конвейером, не имея очереди сборок - PullRequest
0 голосов
/ 24 мая 2019

У меня есть конвейер, похожий на приведенный ниже.

    stage('Build, run, report') {
        for (int i = 0; i < components.size(); ++i){
            builds[i] = {
                stage('Build') {
                    build job: 'Build', parameters: [string(name: 'Component', value: component)]
                }

                stage('Run') {
                   build job: 'Run', parameters: [string(name: 'Component', value: component)]
                }

                stage('Reporting') {
                   'Reporting', parameters: [string(name: 'Component', value: component)]
                }
        }
        }
        parallel builds

Здесь «компоненты» - это список из параметра конвейера.Я хочу запустить тот же поток в соответствии с номером компонента.

У меня есть только один подчиненный узел с 4 исполнителями.Если у меня будет 10 компонентов, 4 начнут работать немедленно, а остальные 6 будут поставлены в очередь и будут ожидать освобождения исполнителя.

Я могу получить даже более 50 компонентов в списке, и зоманирование в очереди выглядит не очень хорошо, и я не думаю, что тогда это будет правильным подходом (я подозреваю, что будет пределсборки также могут быть в очереди.)

Есть ли у нас способ приостановить параллельный запуск до тех пор, пока исполнители / ведомые не станут доступными, и возобновить их по одному, когда исполняющий / ведомый освобождается?

Или у нас есть лучший способ справиться с этим, чем параллельный запуск в конвейере?

1 Ответ

0 голосов
/ 24 мая 2019

Я сам не пробовал, но, возможно, вы можете рассмотреть возможность использования периода тишины для задания сборки после каждых 4 подсчетов компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...