Мы работаем над приложением mule, и недавно нам дали указание следовать модели ветвления и развития PURE Scrum i.e.git-flow.
Ниже приведены шаги, которые мы должны выполнить:
1. Для каждой задачи разработки (с назначенным идентификатором JIRA, например: JIRA-1234) нам необходимо создать отдельную ветвь функций, названную с помощью идентификатора задачи JIRA.
После того, как разработка завершена и протестирована в локальной системе, нам нужно перенести нашу ветвь функций в удаленный репозиторий.
Задание компоновки Jenkins будет опрашивать каждую ветвь объекта и собирает ее, если будет обнаружено какое-либо событие push. После развертывания версия артефакта будет сохранена в Nexus.
QA развернет соответствующую ветвь функций в среде TEST, проведет автоматизацию / ручное тестирование. Если тестирование в порядке, ветвь функций будет объединена для разработки.
В конце спринта мы создадим ветку RELEASE из ветви разработки (которая содержит только разработки TESTED OK для текущего спринта)
У меня проблема с реализацией этих 100% (конечно, я немного оптимистичен):
Если QA необходимо развернуть каждую ветвь функций в среде TEST с помощью задания Jenkins, то в Nexus уже должен был быть сохранен артефакт с уникальным именем (скажем, 4.1.0-JIRA-1234-SNAPSHOT). Для этого мне нужно изменить файл POM.xml с помощью 4.1.0 $ {JIRA_ID} -SNAPSHOT и передать параметр JIRA_ID из команды сборки maven. Это возможно, но при использовании этого файла POM.xml мы столкнемся с проблемами при создании RELEASE (потому что мы используем MVN JGITFLOW: RELEASE-START / MVN JGITFLOW: RELEASE-FINISH)
Мы можем передать эту ответственность разработчику - когда они создают новую ветвь функций для идентификатора JIRA, они вручную изменяют версию в POM.xml как 4.1.0-JIRA-1234-SNAPSHOT. Это создаст артефакт в Nexus после сборки компонента, и QA сможет развернуть его в TEST и завершить тестирование. При объединении возникает проблема, когда из-за перекрывающегося значения может конфликтовать больше ветвей элементов с файлом POM.xml.
Может кто-нибудь предложить мне лучший способ справиться с такой ситуацией и правильно выполнить процесс GIT-FLOW?