Как запустить задание на получение запросов в Jenkins на основе измененных файлов Github? - PullRequest
1 голос
/ 12 мая 2019

Я пытаюсь настроить автоматический запуск задания pull-запроса в монореполе, заключенном из нескольких подкаталогов. Это означает, что мне нужно запустить определенный конвейер для каждого подкаталога, а не запускать ненужные.

Что я уже пробовал:

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

Я хочу, чтобы поток работал следующим образом:

  1. Разработчик открывает запрос на загрузку в Github. Его / ее изменения связаны с подкаталогом в monorepo под названием APP1/.
  2. Дженкинс получает уведомление (или какой-то веб-крючок) и запускает задание, которое создает и тестирует APP1.
  3. Jenkins отправляет результат сборки / тестирования обратно в представление проверок запросов на извлечение (этот этап уже пройден).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...