В нашей среде Release мы используем JGitFlow для управления версиями и Jenkins для заданий сборки (и загрузки в Artifactory). Мы настроили Jenkins так, чтобы он автоматически запускал сборку, когда была выполнена фиксация, а код содержал Jenkinsfile (с декларативным конвейером).
Моя проблема в том, что если вы выпускаете с JGitFlow, он выполняет много коммитов. Если я создаю файл Jenkins, то каждый коммит запускает сборку Jenkins в разных ветвях.
Мне нужно запустить релиз (из ветви разработки), а затем Jenkins выполнит полный выпуск, и в конце Я только хочу загрузить версию приложения.
Я посмотрел на inte rnet и, основываясь на этом, я предложил три различных решения:
Вариант 1: Каждый спецификация ветви c builds
- Master (любой коммит) ->
mvn build
&& выгрузить стабильную версию в artifarty - Release-x (только сборка после запуска релиз-задания ) ->
mvn release-finish
(артефакт без загрузки) - Разработка (параметр выпуска = true, не из фиксации Jenkins) ->
mvn release-start
(артефакт без загрузки) - Разработка (выпуск параметр = false, не из коммита Jenkins) ->
mvn build
&& загрузка в artifarty
Вариант 2. Одна большая сборка в разработке
- Никогда не создавать задания, запущенные через сделанный Jenkins
- Если вы хотите чтобы выполнить выпуск в ветви разработки, выполните следующие действия:
mvn build release-start release-finish
(не загружать артефакт) - Извлечь основную ветку
mvn build
&& загрузить артефакты (изображение)
Вариант 3: Комбинация
- Основная ветка, которую вы всегда строите:
mvn build
&& загрузка стабильной версии. - Другие ветки, которые вы не запускаете при помощи коммитов, выполненных Jenkins
- Если вы хотите выпустить релиз в ветке Develop:
mvn build release-start release-finish
(не загружать артефакты)
Вариант 1 - это то, как будет работать jgitflow, но скрипт сборки станет очень сложным. Второй вариант будет гораздо проще понять, но в разрабатываемой версии сборки вы на самом деле создаете основную ветвь. Вариант третий, на мой взгляд, является хорошей комбинацией двух; не сложный, но также нет главной ветки сборки в работе ветки разработки.
У кого-нибудь есть идея получше? Плагин, который поможет мне? Или пример, который отлично подходит для них?
Заранее спасибо