У меня есть git monorepo с разными приложениями. В настоящее время у меня есть один файл Jenkinsfile в корневой папке, содержащий конвейер для всех приложений. Выполнение полного конвейера для всех приложений занимает очень много времени, если фиксация изменила только одно приложение.
Мы используем подход к ветвлению, подобный GitFlow, поэтому задания Multibranch Pipeline в Jenkins идеально подходят для нашего проекта.
Я ищу способ иметь несколько заданий в Jenkins, каждое из которых будет запускаться только при изменении кода соответствующего приложения.
Идеальное решение для меня выглядит так:
У меня есть несколько вакансий Multibranch Pipeline в Jenkins. Каждый ищет изменения только в данном каталоге и подкаталогах. Каждый использует собственный Jenkinsfile. Задания вытягивают git каждые X минут, и если есть изменения в соответствующих каталогах в существующих ветках - запускает сборку; при появлении новых веток с изменениями в соответствующих каталогах - запускает сборку.
Что мне мешает от этой реализации
Мне не хватает способа определить фиксацию того, какие папки следует игнорировать во время выполнения сканирования с помощью Multibranch pipeline. «Дополнительное поведение» для многоотраслевого конвейера не имеет опции «Опрос игнорирует фиксации определенных путей», в то время как задания конвейера или фристайла имеют. Но я хочу использовать Multibranch pipeline.
Решение описано здесь не работает для меня, потому что если будет новая ветка с изменениями только для «project1», то всякий раз, когда будет запущен Multibranch pipeline для «project2», он все равно обнаружит эту новую ветку и построит ее. Значит, для каждой новой ветки каждый из моих многоотраслевых конвейеров будет выполняться хотя бы один раз, независимо от того, были ли изменения в соответствующем коде или нет.
Благодарим за любую помощь или предложения, как я могу реализовать несколько многоотраслевых конвейеров, наблюдающих за одним и тем же репозиторием git, но срабатывающих только при изменении соответствующих фрагментов кода.