Трубопровод Дженкинс - Как поддерживать со временем - PullRequest
0 голосов
/ 08 сентября 2018

В настоящее время я использую Cloudbees Jenkins Core в качестве решения Jenkins.

Я использую Jenkins Pipelines , чтобы написать нашу конфигурацию работы Jenkins. Эти конвейеры хранятся в репозиториях GitHub. Каждое задание Jenkins, когда оно создается, подключается к репозиторию GitHub, из которого извлекается исходный код, и именно там хранится файл Jenkins, а Jenkins выполняет чтение.

Ниже приведены некоторые высокоуровневые фотографии о том, как настроены наши задания Jenkins.

Jenkins Job Configuration One

Jenkins Job Configuration Two

Преимущество настройки этих заданий состоит в том, что Jenkinsfile всегда читается из главной ветви. То есть, если разработчик ружья пытается удалить этапы из Jenkinsfile из своей собственной ветви, это не имеет значения, потому что Jenkinsfile всегда читается из главной ветви (которая всегда защищена).

Тем не менее, один массивный недостаток - как команды и разработчики, которые являются разработчиками devops, вносят изменения в Jenkinsfile? Например, допустим, что разработчик создает ветку с именем feature-jenkins-search и редактирует Jenkinsfile, добавляя новый этап в конвейер. Всякий раз, когда они помещают эти изменения в GitHub для тестирования - они не могут выполнять тестирование, поскольку оно всегда читается из основной ветки? То есть инженеры devops должны работать напрямую с основной веткой? Конечно, это не лучший способ, и есть лучшая конфигурация для настройки?

Мы все еще хотим обеспечить безопасность, если разработчик не в порядке и

1 Ответ

0 голосов
/ 08 сентября 2018

Вам действительно стоит заглянуть в 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 в основной ветке, который будет использоваться для построения всех веток, как вы уже видели, неработоспособно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...