Вам действительно стоит заглянуть в Jenkins многоотраслевой конвейер . Многоотраслевой конвейер Jenkins позволяет создать в Jenkins один элемент конфигурации (немного похожий на папку), который может обнаруживать все ветви и запрашивать запросы в репозитории GitHub с помощью Jenkinsfile и создавать их с помощью автоматически создаваемых заданий. Внутри этого многоотраслевого конвейерного объекта, когда он настроен в Jenkins, вы найдете ряд заданий для создания различных веток и запросов на выборку в репозитории GitHub.
Таким образом, ваши разработчики должны поддерживать Jenkinsfile в каждой ветви, над которой они работают в GitHub, для создания этой ветви на вашем сервере Jenkins.
Возможно заставить Jenkinsfile выполнять специфическую обработку веток, если это требуется, с условными этапами / когда условия в конвейерах Jenkinsfile в каждой ветке.
Вы можете заблокировать основную ветку, чтобы изменения кода и Jenkinsfile из других ветвей могли быть объединены только с одобренным PR (запрос на извлечение). Существует хорошая интеграция между Jenkins и GitHub, так что вы можете настроить основную ветку так, чтобы PR можно было объединять только в том случае, если PR можно построить в Jenkins. Поэтому, если разработчики добавляют новые этапы / обработку в файл Jenkinsfile для ветви, объединяемой с master, она должна быть проверена, чтобы сборки вашей основной ветви не нарушались.
В объекте многоотраслевого конвейера Jenkins имеется много возможностей конфигурирования для обнаружения и обработки ветвей, и может потребоваться экспериментировать, чтобы подобрать то, что вам нужно в вашей команде. Если вы не можете найти эту функцию в Jenkins, возможно, это связано с тем, что правильный конвейер Jenkins и подключаемые модули GitHub не установлены.
Вы также можете взглянуть на похожую функцию Jenkins, называемую Папка организации Jenkins GitHub, которая позволяет обнаруживать и создавать все репозитории и ветви на уровне организации GitHub. Но в начале я бы посоветовал сначала заглянуть в многоотраслевой конвейер на уровне одного репо.
Эти функции обсуждаются в документации по конвейеру Jenkins . Мы используем эти функции с нашим внутренним сервером GitHub и Jenkins, и он работает очень хорошо.
Я думаю, что вы найдете идею использовать один Jenkinsfile в основной ветке, который будет использоваться для построения всех веток, как вы уже видели, неработоспособно!