Jenkins - Как родительское задание может указать параллельным дочерним заданиям запускаться на любом доступном незаблокированном узле в пуле? - PullRequest
0 голосов
/ 01 июля 2019

В настоящее время я переносю установку монолитного многоотраслевого конвейера на использование плагина jenkins jobDSL для ускорения сборки.Моя настройка jobDSL теперь генерирует 10 заданий, каждое из которых управляет подмножеством этапов, объявленных в старом многоотраслевом конвейере Jenkinsfile.Из 10 заданий одно является «родительским заданием», которое запускает остальные 9 «дочерних заданий» параллельно и ожидает их завершения;сбой любого запущенного дочернего задания, соответственно, сообщит родительскому заданию о сбое.

В предыдущей конфигурации многоотраслевого конвейера у меня настроены блокировки, гарантирующие, что мои узлы выделены для построения только одной ветви за раз.Другие ответвления, работающие под многоотраслевым конвейером, будут ожидать снятия блокировки на узле, прежде чем продолжить работу конвейера;это в основном связано с тем, что на данном узле выполняются EXE-файлы, которые не могут быть запущены одновременно.

В настоящее время при выполнении родительского задания каждое запущенное дочернее задание будет выполняться на том же узле, на котором запущен родительский.Многие решения, которые я нашел, предлагают создавать метки для каждой из моих машин сборки, и чтобы родитель велел каждому ребенку работать;это не совсем соответствует моим потребностям, поскольку, хотя у меня все узлы сборки живут под групповой меткой, дочерние элементы все еще работают на той же машине, на которой выполняется родительское задание.Точно так же я не хочу прикреплять определенные дочерние задания к определенным узлам сборки, а скорее запускать их на любом доступном незаблокированном узле.

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

Версии:

  • Jenkins: 2.182
  • JobПлагин DSL: 1.74
  • Плагин конвейера: 2.6
  • Плагин блокируемых ресурсов: 2.5
  • Плагин параметров узла и метки: 1.7.2
...