Что есть:
1 несколько проектов, для каждого из которых есть джоба с тестами (можно запускать, смотреть результаты - все как обычно)
2 есть общая джоба, которая по очереди запускает все джобы из пункта 1 (типа регресс по всем проектам).
Что хотелось бы:
Запуск общей джобы занимает относительно много времени из-за последовательного выполения подджоб. Подскажите, можно ли на уровне дженкинса распараллелить их запуск и что для этого лучше использовать?
я слышал что Parallel stages with Declarative Pipeline 1.2 это шаг в правильно направлении по сравнениб с freestyle jenkins jobs умеет это - к сожелению на изучение соотвествующих api не хватает пока времени…
Создаем новую джобу типа “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' // печатаем в консоль доступные переменные окружения
}
}
}
Скрипты пишутся на groovy, запускаются через песочницу, так что много методов стандартных не доступно, все можно обойти понизив безопасность Jenkins.
Пайплайны это вся соль Дженкинса, видение разработчиков в том что в будущем все джобы будут писатся на них =)
Будет время отвечу на вопросы.
я имел в виду для плагин провайдеров чтобы служба медом не казалась - переписать провайдер чтобы от поддерживал pipelines это достаточно много работы становиться org.jenkinsci.plugins.workflow.steps.Step