Дженкинс Параллельный запуск и ожидание
У меня есть 4 задания, которые нужно выполнить в следующей последовательности
JOB A
|------> JOB B
|------> JOB C
|------> JOB D
В выше
- A должен запускать B & C параллельно, а C Inturn запускает D.
- 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 ко всем его этапам и заданиям. Фазы являются последовательными, в то время как задания внутри каждой Фазы параллельны.