Git flow: Как настроить процесс выпуска одним щелчком мыши в Jenkins?

Мы используем стандартную модель разветвления потока git (разработка, мастер, выпуск, исправление и т.д.).

В рамках нашего рабочего процесса мы хотели бы создать "один клик" с помощью jenkins.

Я смотрел jgitflow-maven-plugin. Могу ли я настроить этот плагин, чтобы сделать один клик от дженкинсов? Если да, то каковы параметры конфигурации?

В частности, могу ли я сделать что-то вроде этого?

Jenkins Job
Maven goals:    release-start release-finish -Dsomething -Delse

И есть ли способ сказать, что он автоматически строится из последней версии -SNAPSHOT, например. если версия 1.2.3-SNAPSHOT, она построит release-1.2.3.

В противном случае существует ли плагин maven, который создает релизы в соответствии с моделью ветвления потока git (т.е. строить из develop и создавать новую ветвь выпуска с именем release-x.y.z).

Ответ 1

Мы никогда не находили способ заставить это работать через плагин или цель maven в Дженкинсе.

Наше решение закончилось с bash script, который выполнял git flow release start <version>, процесс выпуска maven, git flow release finish <version> и другие вещи (git тянуть на develop и master в самом начале, git push и слабые уведомления на самом конце).

Ответ 2

Хотя этот ответ один год, я хотел бы отметить, что между тем jgitflow (v1.0-m5.1) работает с пакетным режимом maven.

Итак, чтобы выпустить артефакт с помощью только одной команды, вы можете выполнить:

mvn --batch-mode jgitflow:release-start jgitflow:release-finish

Вам не нужно устанавливать developmentVersion и releaseVersion.

JGitFlow будет использовать текущую версию минус -SNAPSHOT в качестве версии выпуска. Затем он увеличивает младшую значащую цифру и добавляет -SNAPSHOT снова для следующей версии разработки.
Пример 1.0.0-SNAPSHOT → Релиз: 1.0.0, следующая версия для разработки: 1.0.1-SNAPSHOT

Чтобы настроить одноразовое задание на выпуск Jenkins, вам нужно настроить некоторые вещи, относящиеся к Git.

В Source Code Management > Git > Additional Behaviors выберите

  • Wipe out repository & force git clone: просто убедитесь, что рабочее пространство чистое.
  • Checkout to specific local branch: ветвь develop.

Наконец, релиз происходит локально на вашем сервере Jenkins, поэтому вы хотите отослать изменения на ваш Git удаленный сервер.

Для этого проще всего добавить Post-build action, который выполняет следующую команду bash (имена ветвей могут различаться, я использовал значения по умолчанию JGitFlow):

git push origin develop master --tags

Примечание Если Jenkins работает в Windows, вам либо нужно выполнить пакетную script, содержащую ту же команду (иногда это не работает из-за проблем SSH с Windows), либо настройте Git Publisher Post-build action соответственно.

Ответ 3

Вы можете просто использовать плагин jenkins M2 Release Plugin с целями выпуска вариантов -B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish

Ответ 4

Мы закончили выпуск релиза через CLI на клиенте (потому что в Jenkins есть ошибка, начиная выпуск).

git flow release start -DautoVersionSubmodules=true

Если вы хотите использовать пакетный режим, вам нужно указать developmentVersion и releaseVersion.

Создал новую работу в Jenkins, чтобы создать ветвь релиза и использовать M2 Release Plugin, чтобы окончательно отпустить его:

-B jgitflow:release-finish

Если вы используете некоторые пользовательские профили, вам необходимо передать их через аргументы, вызванные ошибка.

-Darguments=-Pprofile