Дженкинс Параллельный запуск и ожидание

У меня есть 4 задания, которые нужно выполнить в следующей последовательности

JOB A 
 |------> JOB B
 |------> JOB C 
            |------> JOB D

В выше

  1. A должен запускать B & C параллельно, а C Inturn запускает D.
  2. A должен держать работу как работающую, пока все 3 из них не будут завершены.

Я попробовал следующие плагины и не смог достичь того, что я ищу

  • Присоединиться к плагину
  • Multijob Плагин
  • Мультиконфигурационный проект
  • Paramterized Trigger Plugin

Есть ли какой-нибудь плагин, который я не пробовал, помог бы мне решить эту проблему. Или это может быть достигнуто по-другому. Пожалуйста, порекомендуйте.

5 ответов

Используйте DSL Script с плагином Build Flow.

попробуйте этот пример для выполнения:

   build("job A")

   parallel
   (
      {build("job B")}
      {build("job C")}
   )

   build("job D")

Это не может быть оптимальным способом, но это должно работать. Используйте плагин с параметризованным триггером. В задании A добавьте шаг сборки (НЕ действие после сборки), чтобы запустить оба задания B и C в одном и том же шаге сборки и блоке до их завершения. В задании C добавьте шаг сборки (НЕ действие после сборки), который запускает блоки D и задания до его завершения. Это должно поддерживать работу А на протяжении всего срока.

Однако это не совсем оптимально: задание А остается открытым в ожидании завершения В и С. Затем C остается открытым, пока D не закончится.

Есть ли какая-то причина, по которой задание А должно продолжаться в течение всего времени? Другая возможность состоит в том, чтобы завершить задание A после запуска B и C, но получить повышение по заданию A, которое выполнит ваши последние действия после успешного выполнения заданий B, C и D.

Я пытаюсь построить ту же систему. Я строю конвейер сертификации, где мне нужно запускать задания упаковщика / сборки / развертывания и соответствующие тестовые задания. Когда все они пройдут успешно, я хочу объединить результаты теста и запустить задание на выпуск, которое может сделать автоматический выпуск Maven.

Я выбрал плагин Построить конвейер для визуализации системы. Изначально пробовал с параметризованным плагином триггера с блокировкой сборок. Я не мог настроить архивацию артефактов / дактилоскопии и отношения сборки вниз по потоку таким образом, поскольку архивация артефактов работает только в постбилде. Затем я поместил триггер Parameterized в активность Пост сборки. Таким образом, я смог настроить нисходящие сборки, дактилоскопию, совокупные результаты тестов, но сбои сборки не пересекались с цепочкой заданий вверх по течению, а вышестоящие задания не блокировались

Я наконец смог достичь этого с помощью этих плагинов

  • Построить трубопровод
  • MultiJob Плагин
  • Плагин FingerPrint
  • Плагин копирования артефактов
  • Присоединиться к плагину

Я использую Jenkins 1.514

Система выглядит так

Триггерное задание -> создать (и развернуть) задание (1..n) ---> Тестовое задание (1..n)

Триггерная работа -

  • Создать как MultiJob и создать файл отпечатка в оболочке Exec

    эхо date +%s > fingerprint.txt

Хитрость в том, что файл должен быть заархивирован во время сборки, чтобы выполнить этот скрипт:

ARCHIVEDIR=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive
mkdir $ARCHIVEDIR
cp fingerprint.txt $ARCHIVEDIR
  • Создать MultiJob Phase, состоящий из задания сборки / развертывания.
  • Задание на сборку / развертывание само по себе является многопрофильной
  • выполните те же шаги для создания задания сборки / развертывания, что и выше, в отношении снятия отпечатков пальцев.
  • Скопируйте артефакт fingerprint.txt из вышестоящего задания
  • Настроить этап MultiJob в задании развертывания, которое запускает тестовое задание
  • создайте новый файл отпечатка пальца и принудительно заархивируйте его, как описано выше
  • Соберите результаты Junit в финальной тестовой работе.


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

Multijob Плагин

Если вы хотите прекратить путаницу с определениями цепочек заданий в нисходящем / восходящем направлении. Или когда вы хотите добавить полную иерархию заданий Jenkins, которые будут выполняться последовательно или параллельно. Добавьте контекст к вашему потоку сборки, реализуя наследование параметров от MultiJob ко всем его этапам и заданиям. Фазы являются последовательными, в то время как задания внутри каждой Фазы параллельны.

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

Другие вопросы по тегам