Управление выпусками - Maven, Bamboo и JIRA

Я хотел бы найти лучший способ управления выпусками с помощью Maven 2, Bamboo 3.1 и JIRA 4.3. Я много чего пробовал, но все время захожу в тупик из-за ошибок или отсутствия функциональности.

Моя конечная цель - получить версии из JIRA, заставить Bamboo взять эти версии и построить из них артефакты с помощью Maven, а затем развернуть эти артефакты в репозитории (в нашем случае Nexus).

Вот подходы, которые я пробовал:

1) Используйте заполнитель во всех помах для версий проекта:

Родительский пом

<project ...>
  <groupId>group</groupId>
  <artifactId>parent</artifactId>
  <version>${ci.version}</version>
  ...
  <modules>...</modules>
</project>

Детский пом

<project ...>
  <parent>
    <groupId>group</groupId>
    <artifactId>parent</artifactId>
    <version>${ci.version}</version>
  </parent>
  <artifactId>child</artifactId>
  ...
</project>

Это строится, если вы запускаете сборку из корневого pom проекта и указываете -Dci.version=<my-version> в командной строке. Совместите это с подключаемым модулем управления выпусками Bamboo, и я смогу создавать и развертывать версии своих модулей и отпустите по мере необходимости.

Проблема с этим подходом заключается в том, что Maven не заменяет переменные-заполнители в poms при развертывании или установке, что означает, что poms в репозитории имеют маркер ${ci.version}, когда я бы действительно хотел, чтобы у них была конкретная версия. Из-за заполнителя это означает, что никто не может использовать модули, которые я развертываю. См. MNG-2971.

2) Используйте конкретные версии SNAPSHOT в pom и настройте bamboo для выполнения Maven Release Plugin с помощью подключаемого модуля Bamboo Release Management.

К сожалению, плагину Maven Release требуется версия, до которой нужно увеличивать, плагин bamboo позволяет вам получить имя текущей версии для сборки, но не следующей. Без этой информации использование Maven Release Plugin увеличило бы версию до того, что не управляется JIRA. Чтобы эта опция работала, мне либо понадобится следующая доступная мне версия, либо я смогу запустить план после того, как плагин Bamboo Release Management сделает это (это второе исправление также добавит лишнего беспорядка в журналы фиксации, как вы получить одну фиксацию для автоматического увеличения и одну для правильного увеличения).

2.b) То же, что и 2), но вы должны указать следующую версию в Bamboo до любой сборки выпуска через интерфейс конфигурации плана, задав значение вручную для следующей версии JIRA, над которой должен работать план. Это решает проблему с 2), но добавляет дополнительные ручные действия.

3) Сделайте что-то вручную, возможно, используя Maven Release Plugin. Полностью игнорируйте все функции выпуска в Bamboo и вручную управляйте выпуском в командной строке, вызывая цель плагина выпуска Maven, чтобы изменить версию по мере необходимости. Версии JIRA также необходимо будет выпускать вручную, когда это произойдет. Нам также необходимо настроить сборку bamboo для запуска и тестирования тега, который плагин выпуска создает для версии, отличной от SNAPSHOT.

В этом варианте столько процесса, что что-то обязательно пойдет не так.

Я не могу быть единственным, кто пытается получать автоматические выпуски с использованием этих технологий, может кто-нибудь помочь.

Спасибо


person Matt    schedule 06.09.2011    source источник


Ответы (1)


матовый

Вы должны указать в своей цели -Dci.version = {bamboo.custom.brmp.name} Я наткнулся на ваш вопрос, когда искал точно такую ​​же информацию, но тогда для JIRA 4.4 и Bamboo 3.3, где находится плагин управления выпуском был заменен / обновлен плагином JIRA Bamboo ...

Надеюсь это поможет,

Фрэнсис

person Francis Martens    schedule 16.12.2011
comment
Спасибо за ответ. Оказывается, этот подход не работает для повторно используемых компонентов вне проекта, потому что, хотя правильная версия артефакта будет развернута, pom заканчивается заполнителем вместо конкретной версии. Таким образом, в родительских ссылках есть ‹version› $ {ci.version} ‹/version›, что делает помпы непригодными для использования вне родительского проекта. В конце концов, я выбрал комбинацию фиксированной версии моментального снимка и плагина версий maven, который явно вызывается из задания bamboo, чтобы изменить версию на то, что нужно. - person Matt; 19.12.2011