Я пытаюсь настроить автоматический запуск задания pull-запроса в монореполе, заключенном из нескольких подкаталогов. Это означает, что мне нужно запустить определенный конвейер для каждого подкаталога, а не запускать ненужные.
Что я уже пробовал:
- Плагин Github Pull Request Builder - Отличный плагин для тех, кто не запускает конвейерный сценарий, а скорее проект "Классический" Jenkins. Кроме того, он больше не поддерживается, и многие вопросы остаются там без ответа.
- Git SCM Jenkins Plugin - имеет многообещающие функции
includedRegions
и excludedRegions
и должен запускать задания на основе регулярного выражения. К сожалению, он не работает должным образом, и триггеры основываются на любых изменениях .
- Используя набор изменений Git, который получает Jenkins, выполните
Validate stage
при запуске сборки, и если ни один из измененных файлов не запускается с нужного подкаталога - отмените и выйдите из сборки. Это приводит к десяткам прерванных ненужных сборок.
- Jenkins Generic Webhook Plugin - Этот плагин представляет собой простой в использовании плагин, который опирается на полезную нагрузку json, которую он получает в веб-крюке, и запускает задание на основе определенного фильтра. Проблема в том, что в API Github события открытия / обновления запроса на получение не включают измененные файлы. Так что этот вариант использования работает только с событием push в Github, но не только с событиями PR.
Я хочу, чтобы поток работал следующим образом:
- Разработчик открывает запрос на загрузку в Github. Его / ее изменения связаны с подкаталогом в monorepo под названием
APP1/
.
- Дженкинс получает уведомление (или какой-то веб-крючок) и запускает задание, которое создает и тестирует
APP1
.
- Jenkins отправляет результат сборки / тестирования обратно в представление проверок запросов на извлечение (этот этап уже пройден).