Дженкинс: запуск многоотраслевого конвейера при восходящем изменении
В настоящее время я тестирую конвейерный подход Jenkins 2.0, чтобы увидеть, работает ли он в среде сборки, которую я использую.
Сначала о самой окружающей среде. В настоящее время он состоит из нескольких хранилищ SCM. Каждый репозиторий содержит несколько веток, для разных этапов разработки, и каждая ветка строится с несколькими конфигурациями. Не все конфигурации применимы к каждому репозиторию.
В настоящее время каждый репозиторий / ветка настроен какМатричный проект для разных конфигураций. Каждый проект представляет свои результаты строительства как артефакт, и эти артефакты используются в последующих проектах.
Различные репозитории зависят друг от друга, поэтому успешная сборка вышестоящего задания запускает некоторые конкретные задания вниз по течению. В настоящее время все это работает, но объем работы, необходимой для настройки новой ветви или настройки процесса сборки, очень велик, поскольку многие различные проекты необходимо изменять вручную.
Теперь я хотел попробовать новые трубопроводы. Моя идея состояла в том, чтобы создать многоотраслевые трубопроводные проекты и разместитьJenkinsfile
внутри репозитория, содержащего инструкции по сборке.
Основная проблема состоит в том, чтобы заставить сборки запускать друг друга, потому что, в основном, сборка в конкретной ветке upstream должна запускать ветку downstream. Однако информация о том, какие нисходящие ветки должны быть запущены, неизвестна вышестоящему проекту. Каждый нисходящий проект выбирает артефакты из некоторых веток восходящего потока, и идеальным решением было бы, если бы нисходящая сборка была бы запущена в случае, если вышестоящая сборка, которая является источником для артефакта, заканчивает свою сборку.
Проблема в том, что только нижестоящие проекты действительно знают, какие артефакты им нужны. Имена ветвей в большинстве случаев вряд ли совпадают, и это затрудняет запуск сборок из вышестоящего проекта.
В настоящее время это решается с помощьюReverseBuildTrigger
, Но эта штука перестает работать, как только она приближается к трубопроводу.
Я действительно в растерянности, как заставить это работать. Есть ли способ получить что-то вродеReverseBuildTrigger
работа внутри конвейерных скриптов?
Кроме того, запуск всей нисходящей сборки для всех ветвей в случае изменения одной ветки в восходящем направлении не возможен. Это создаст слишком много равных сборок.