Выпуск Maven через Хадсон

Я настраиваю Hudson для использования плагина пакетной задачи для создания выпусков maven в нашем внутреннем репозитории. Я делаю это через:

mvn --batch-mode release:prepare
mvn --batch-mode release:perform

Меня интересуют другие методы, которые люди использовали, и за и против этих методов. Кроме того, любой человек, попавший в проблему, столкнулся с проблемой.

Ответ 1

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

Наш процесс разработки позволяет нам оставлять зависимости, внешние по отношению к текущей сборке в предыдущей версии, до тех пор, пока исправление не потребует обновления. Это означает, что если я выпущу Nexus, Maven и т.д., То я вижу моментальные снимки, и это означает, что я должен уйти и отпустить их первым. Этот процесс на самом деле невозможно автоматизировать, поскольку он изменяется в зависимости от того, что было изменено с момента последней версии.

Тем не менее, у нас есть специальная машина (в Sonatype это просто vm), только для сборки. Это делается для того, чтобы гарантировать отсутствие изменений окружающей среды, которые могут повлиять на сборку случайно (например, изменение jdk). Это также облегчает для любого, кто забирает процесс выпуска, потому что он всегда готов к работе.

Ответ 2

Недавно к моему вниманию пришел плагин m2release. Казалось, приятно. Хотя, я бы хотел, чтобы мой выпуск был полностью "бескомпромиссным". Я имею в виду, что мы должны предоставить 4 входных параметра для обработки полного выпуска:

  • версия выпуска (например, 1.0.0)
  • новая версия разработки (пример 1.0.1-SNAPSHOT)
  • тег релиза в SCM (например, release 1.0.0 или 1.0.0)
  • базовый путь тега в SCM

Первые 2 имеют приемлемые значения по умолчанию. Версия, натыкающаяся на цифру версии с исправлением ошибок, отлично подходит для меня.

Номер 4 может быть указан в pom. Он не изменится.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

Это третий, который мешает мне полностью автоматизировать выпуск нажатием кнопки. Ярлык тега выпуска по умолчанию не сделает это для нас, поэтому мы должны указать его:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tag>release-${pom.version}</tag>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

Теперь, хотя это может быть только то, что мне нужно, в итоге у меня есть тег svn с -SNAPSHOT.:( Поэтому мне нужно передать параметр тега в настройке задания Хадсона. Кроме того, мне нужно изменить его для каждой выпуски, которую мы делаем... что не совсем то, что мне нужно.


Итак, в конце концов, имея проект типа maven2 в hudson +, плагин hrefon2release + плагин релиза maven, правильно настроенный, является Матерью всего процесса выпуска, который я видел до сих пор. Хотя это и не идеально, это спасло меня много напряженной работы.

JS.

Ответ 3

Я всегда запускал выпуск вручную с очевидными плюсами и минусами: -)

Ответ 4

Мы экспериментировали с плагином релиза Hudson Maven, хотя мне немного сложно получить его, чтобы должным образом кредитовать выпуски, без злых вещей, таких как hardcoding пароли в наши файлы сборки.