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