Параллельный запуск джоб из общей джобы в Jenkins

Всем привет

Нужен совет по работе с дженкинсом.

Что есть:
1 несколько проектов, для каждого из которых есть джоба с тестами (можно запускать, смотреть результаты - все как обычно)
2 есть общая джоба, которая по очереди запускает все джобы из пункта 1 (типа регресс по всем проектам).

Что хотелось бы:
Запуск общей джобы занимает относительно много времени из-за последовательного выполения подджоб. Подскажите, можно ли на уровне дженкинса распараллелить их запуск и что для этого лучше использовать?

Спасибо

Мы пользуемся данным плагином для такого рода задач Multijob
Из минусов, придется создавать общую джобу с нуля

1 лайк

я слышал что
Parallel stages with Declarative Pipeline 1.2 это шаг в правильно направлении по сравнениб с freestyle jenkins jobs умеет это - к сожелению на изучение соотвествующих api не хватает пока времени…

1 лайк

Создаем новую джобу типа “Pipeline”
Далее пример Scripted Pipeline, вписывается скрипт внизу джобы:

node('master') {  // выполняется на основной ноде
    currentBuild.displayName = "${BUILD_TIMESTAMP}" //название билда
    currentBuild.result = 'SUCCESS'    // в другом месте скрипта можно заменить на 'FAILURE' чтобы весь пайп считался заваленным
    wrap([$class: 'TimestamperBuildWrapper']) {   //чтобы видеть время выполнения в консоли
        stage('test'){ // название стадии, внутри блока parralel не должно быть stage
            parallel parallelTask1: {  //название паралельного выполнение чтобы различать в отчете
            	build job: 'test-job-name1', parameters: [string(name: 'PARAM_NAME1', value: 'some value'),
            											  booleanParam(name: 'bool_PARAM_NAME', value: true)]
            }, parallelTask2: {
            	build job: 'test-job-name2', parameters: [string(name: 'PARAM_NAME1', value: 'some value'),
            											  booleanParam(name: 'bool_PARAM_NAME', value: true)]
            }
        }
        stage('printenv'){
        	sh 'printenv'  // печатаем в консоль доступные переменные окружения
    	}
    }
}

Генератор скрипта, шаги доступны в зависимости от установленных плагинов:
http://вашДженкинсСервер/view/НазваниеВида/job/НазваниеДжобы/pipeline-syntax/

Описание переменных доступных в пайпах:
http://вашДженкинсСервер/view/НазваниеВида/job/НазваниеДжобы/pipeline-syntax/globals

Скрипты пишутся на groovy, запускаются через песочницу, так что много методов стандартных не доступно, все можно обойти понизив безопасность Jenkins.
Пайплайны это вся соль Дженкинса, видение разработчиков в том что в будущем все джобы будут писатся на них =)
Будет время отвечу на вопросы.

2 лайка

я имел в виду для плагин провайдеров чтобы служба медом не казалась - переписать провайдер чтобы от поддерживал pipelines это достаточно много работы становиться org.jenkinsci.plugins.workflow.steps.Step