Выпуск Jgitflow с использованием декларативного конвейера Jenkins - PullRequest
0 голосов
/ 17 марта 2020

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

У кого-нибудь есть идея получше? Плагин, который поможет мне? Или пример, который отлично подходит для них?

Заранее спасибо

...