2015-04-09 3 views
10

Мы используем стандартную модель ветвления ветвей git (разработка, мастер, выпуск - , исправление - и т. Д.).Git flow: Как настроить процесс выпуска одним щелчком мыши в Jenkins?

В рамках нашего рабочего процесса мы хотели бы создать «один клик» с помощью 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).

+0

Вы управляли им тем временем? если да, то как? – Puce

+0

Нет, мы пока не работаем. Все еще делаю mvn release: подготовьте и отпустите: выполните (что, как мы все знаем, является королевской болью в b ** t). – vikingsteve

+1

Просто небольшое обновление здесь, мы работаем с unix-скриптом с именем 'release.sh', который выполняет следующие действия:' git flow release start ... ',' mvn -B release: подготовить', 'mvn release: выполнить' , 'git flow release finish ...'. Это не идеально, и он не работает с машинами Windows, но это лучшее решение, которое мы имеем сейчас. – vikingsteve

ответ

0

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

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

1

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

+0

Хорошо. Вы уверены, что jgitflow может работать в пакетном режиме? Последнее, что я попробовал, потребовал какой-то параметр 'version'. – vikingsteve

+0

@vikingsteve Используйте ** developmentVersion ** и ** releaseVersion свойства **, см. Мой ответ. – CSchulz

1

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

git flow release start -DautoVersionSubmodules=true 

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

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

-B jgitflow:release-finish 

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

-Darguments=-Pprofile 
9

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

Так выпустить артефакт только с одна командой вы можете выполнить:

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

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

JGitFlow будет использовать текущую версию минус -SNAPSHOT в качестве версии выпуска. Затем он увеличивает младшую значащую цифру и добавляет -SNAPSHOT снова для следующей версии разработки.
Пример1.0.0-SNAPSHOT -> Release: 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 филиала.

Наконец, выпуск происходит локально на вашем сервере Дженкинс, так что вы хотите отодвигают изменения к вашему Git удаленному серверу.

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

git push origin develop master --tags 

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

+0

Выглядит многообещающе, испытайте это. Спасибо. – vikingsteve

+0

В основном, это сводится к этим четырем командам, упакованным как работа Дженкинса: 'git clone . && git checkout develop && mvn --batch-mode jgitflow: release-запуск jgitflow: release-finish && git push origin develop master --tags ' – gucce

+0

@gucce ваши шаги отлично работали. Учитывая, что jgitflow не видел активного развития через некоторое время, у вас был успех с любыми другими плагинами git flow maven? – testphreak

 Смежные вопросы

  • Нет связанных вопросов^_^