Как перейти от снимка к выпуску с Maven и Дженкинс

1

Я использую Maven как инструмент для сборки и Jenkins в качестве моего сервера сборки. Я пытаюсь упростить разработку и создание.

У меня есть следующее:

Глобальный pom

<project>
    <!-- ... -->
    <artifactId>global-pom</artifactId>
    <!-- ... -->
</project>

Библиотеки pom (parent pom is Global), у этого есть загрузка общих библиотек

<project>
    <!-- ... -->
    <version>2.0-SNAPSHOT</version>
    <artifactId>libraries-pom</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>global-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <properties>
        <libraries.version>2.0-SNAPSHOT</libraries.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- ... -->
                <artifactId>library-one</artifactId>
                <version>${libraries.version}</version>
            </dependency>
            <dependency>
                <!-- ... -->
                <artifactId>library-two</artifactId>
                <version>${libraries.version}</version>
            </dependency>
            <!-- ... -->
        </dependencies>
    </dependencyManagement>

    <modules>
        <module>library-one</module>
        <module>library-two</module>
        <!-- ... -->
    </modules>
</project>

Общая библиотека (родительский pom - это библиотеки) pom будет выглядеть так:

<project>
    <!-- ... -->
    <version>2.0-SNAPSHOT</version>
    <artifactId>library-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>

Затем служба pom (parent pom is Libraries) может выглядеть так:

<project>
    <!-- ... -->
    <version>1.0-SNAPSHOT</version>
    <artifactId>service-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>

Теперь все хорошо и хорошо, когда я развиваюсь локально. Я могу иметь все эти poms в моем проекте Intellij, и если я что-то изменил в одной из библиотек, которые будут использоваться в одном из проектов, тогда, когда я буду строить и запускать локально, он знает, как построить библиотеку в первую очередь и т. Д...

Всякий раз, когда что-то проверяется, версия SNAPSHOT автоматически строится на Дженкинсе.

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

У кого-нибудь есть идеи? В идеале, когда я хочу выпустить, я хотел бы перейти к моему серверу сборки и щелкнуть по нему, и он автоматически сортирует все для меня - возможно ли это?

Теги:
maven
jenkins

1 ответ

0

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

Для этого включите следующую конфигурацию в родительский pom:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
      <autoVersionSubmodules>true</autoVersionSubmodules>
      <tagNameFormat>v@{project.version}</tagNameFormat>
      <goals>deploy</goals>
    </configuration>
</plugin>

Чтобы сделать выпуск, вам нужно выполнить два шага. Первый mvn -B release:prepare и mvn -B release:perform.

Запустив Maven в пакетном режиме (-B), эти шаги автоматически сделают выпуск, тег, развернуть в удаленный репозиторий и нажать изменения в вашей системе управления версиями (при условии git), которые должны быть указаны в pom.

Однако, чтобы проверить, выполняются ли какие-либо действия, я бы сначала их запускал локально в интерактивном режиме (без -B) и включал в себя некоторую дополнительную конфигурацию для плагина:

<localCheckout>true</localCheckout>
<pushChanges>false</pushChanges>

Это предотвратит нажатие на git. Если с выпуском что-то не так, вы можете сделать mvn release:rollback и очистить репозиторий git локально, а затем зафиксировать конфигурацию плагина выпуска.

Чтобы запустить это в Jenkins, вам нужно создать новое задание, которое будет запускать и prepare и perform команды в пакетном режиме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню