2012-03-21 2 views
6

Я использую Jenkins для создания проектов Maven Java и развертывания их в хранилище Nexus. Я также использую Git, хотя я больше привык к Subversion, поэтому мои знания Git ограничены.Добавочная версия проекта Maven с Jenkins/Git

Я хотел Jenkins/Maven для:

  1. Объединить функцию филиал в интеграции филиал
  2. Сложения присоединяемых код, запустить блок тестирует
  3. Если они проходят, увеличивают Maven номер версии
  4. Нажмите объединенный код в филиал интеграции происхождения
  5. Разверните артефакт в хранилище Nexus

Я собираю слияние Git может быть достигнуто следующим образом: http://twasink.net/2011/09/20/git-feature-branches-and-jenkins-or-how-i-learned-to-stop-worrying-about-broken-builds/

Я также читал много о maven-release-plugin.

Я не уверен, как именно достичь вышеуказанных результатов. Если я жестко запрограммирую данные SCM в POM каждого проекта, то будет ли maven-release-plugin действовать только на , если репозиторий, а не местный Jenkins?

Если я использую решение о том, что Jenkins передает переменную окружения Maven для указания номера версии, я бы ожидал, что в моей среде IDE будут проблемы с локальной версией.

+0

См. [Плагин версии maven] (http://mojo.codehaus.org/versions-maven-plugin/) 'mvn versions: use-next-релизы' или' mvn-версии: set -DnewVersion = xyz' –

+0

Привет , Я попробовал mvn-версии: set -DnewVersion = xyz, но когда артефакт, который развертывается в Nexus, по-прежнему кажется, имеет установленный старый номер версии, хотя я вижу в журналах, что переменная была передана Maven. –

+0

Вы правы, потому что вы нажимаете исходные источники (перед компиляцией). Вы должны нажать источники из рабочего пространства jenkins ... –

ответ

8

ОК, это довольно сложно. Но это выполнимо. Позвольте мне объяснить идею шаг за шагом.

  1. Сначала нам нужно объединить две ветви вместе. Это довольно легко сделать с плагином Jenkins Git, так как у него есть feature built in: Слияние перед сборкой опция доступна в Продвинутый раздел в вашей конфигурации проекта.

  2. Таким образом, мы получили код, объединенный между этими двумя ветвями, мы можем перейти к созданию проекта - как обычно, проекта Дженкинса в стиле Maven.

  3. Теперь нам нужно увеличить версию проекта и его модули, зафиксировать объединенную ветку и вставить артефакты в репозиторий. И здесь у нас есть два варианта:

    1. Используйте maven-release-плагин для работы. Да, это возможно, поскольку никто не сказал, что вам нужно будет поместить URL-адреса в ваш pom, так как это может быть предусмотрено двумя разными способами. Плагин будет использовать один из них с ключом командной строки -DconnectionUrl=. И если ни один из них не будет предоставлен, он проверит файл release.properties, чтобы получить его оттуда. Последний резерв - перейти к pom.xml ang get ${project.scm.connection} переменной. Таким образом, вы можете легко использовать плагин для выполнения всей грязной работы без каких-либо проблем и ввести это свойство, используя различные методы, предоставленные Дженкинсом.
    2. Вы можете использовать комбинацию maven-versions-plugin (specificaly версии: набор и версии: совершать цели) с maven-scm-plugin делать пометки и фиксации изменений.

    В обоих случаях вы можете использовать шаги после с Run только если сборка прошла успешно параметр и вызовите цель Maven верхнего уровня, как обычно. Для всех настроек, упомянутых выше или описанных конкретным плагином, есть возможность легко их предоставить в текстовом поле. Для загрузки ваших артефактов в репозиторий Nexus я бы включил функцию Jenkins в функцию Разверните артефакты в репозиторий Maven, который доступен в вашей конфигурации проекта. Это потребует, чтобы вы предоставили конфигурацию репозитория в определении POM или в качестве свойства.

Надежда, которая охватывает все ваши вопросы. Если вам нужно, чтобы я был более конкретным в любом диапазоне ответов, не стесняйтесь спрашивать.

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