непрерывная интеграция на основе maven2 - PullRequest
3 голосов
/ 24 июля 2009

Я пытаюсь выяснить, как настроить непрерывную интеграцию с помощью maven.

То, что я хочу:

  1. Проверить наличие новых вещей в SVN
  2. Если обнаружены изменения, проверить их
  3. Построить и развернуть

Я думаю, что все это можно вставить в какой-нибудь скрипт оболочки, чтобы он вызывался cron. Таким образом, у нас будет автоматическая непрерывная интеграция (например, ночные сборки)

Я знаю, что у maven есть плагин SCM для работы с системами контроля версий, но я не знаю, как заставить его проверять изменения в репозитории ина основании результатов запуска оформить заказ.

Поэтому я прошу аудиторию:)

PS Я забыл упомянуть - я НЕ ИНТЕРЕСУЮ ни в одном из существующих приложений! Они слишком тяжелые для моего VPS-сервера. Пожалуйста, не советуйте им

Ответы [ 6 ]

3 голосов
/ 24 июля 2009

Взгляните на Хадсон . Он бесплатный, с открытым исходным кодом, активно разрабатывается, имеет десятки полезных плагинов, имеет отличную поддержку Maven2 и отлично работает.

Он также часто обсуждается в переполнении стека.

2 голосов
/ 24 июля 2009

Я бы рекомендовал использовать признанный инструмент CI для управления этим, поскольку для CI есть нечто большее, чем просто сборка.

Но если вы полны решимости бросить свой собственный, вы можетеиспользуйте некоторые цели из maven-scm-plugin и запишите выходные данные.

Предполагая, что у вас есть локальная копия проекта, и у вас есть доступ к pom, вы можете запустить команду status, чтобы проверитьизменения и анализ выходных данных, проверяя наличие изменений. Цель использования:

mvn scm:status

Если вы видите какие-либо измененные файлы, вы можете проверить изменения и вызвать сборку. Остерегайтесь, однако, есть ошибка в maven-scm-provider-svn текст ссылки , которая означает, что измененные файлы могут быть пропущены! Возможно, вам лучше напрямую вызывать Subversion и анализировать его выходные данные.

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

mvn clean scm:checkout deploy

Если у вас нет рабочей копии проекта, вы можете использовать цель scm: bootstrap для ее получения. Если вы настроили некоторые свойства в pom, вы можете повторно использовать pom для начальной загрузки нескольких проектов.

Например, приведенный ниже pom может загрузить любой проект, если вы передадите ему соответствующие аргументы командной строки:

mvn scm:bootstrap -DscmUserName=me -DscmPassword=mypass -DscmConnectionUrl=scm:svn:http://myserver/myproject/trunk

<project>
  [...]
  <packaging>jar</packaging>
  <version>0.0.1</version>
  <name>SCM bootstrapper</name>
  <url>http://somecompany.com</url>
  <scm>
    <connection>${scmConnectionUrl}</connection>
    <developerConnection>${scmDeveloperConnectionUrl}</developerConnection>
    <url>${scmUrl}</url>
  <scm>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <goals>install</goals>
          <username>${scmUsername}</username>
          <password>${scmPassword}</password>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
  <properties>
    <scmDeveloperConnectionUrl>dummy</scmDeveloperConnectionUrl>
    <scmConnectionUrl>dummy</scmConnectionUrl>
    <scmUrl>dummy</scmUrl>
    <scmUsername>dummy</scmUsername>
    <scmPassword>dummy</scmPassword>
  </properties>
</project>

Чтобы Maven работал с Subversion, вам нужно настроить scm раздел POM:

<scm>
  <connection>scm:svn:http://path/to/project</connection>
  <developerConnection>scm:svn:http://path/to/project/tags/version</developerConnection>
  <url>scm:svn:http://path/to/project/tags/version</url>
</scm>

В качестве альтернативы опросу изменений, рассмотрите возможность добавления подключите к Subversion , чтобы сборка запускалась при внесении изменений. Есть другой вопрос , который может дать вам указатель на это.

1 голос
/ 24 июля 2009

Вы смотрели на Хадсон ?

1 голос
/ 24 июля 2009

Maven - это хранилище для хранения кода и строительных проектов. Лично я бы не использовал его как инструмент непрерывной интеграции.

Взгляните на hudson , и я думаю, вы найдете больше того, что ищете. Другие инструменты непрерывной сборки будут работать для вас. Он будет работать, получая последнюю версию кода из вашего репозитория и создавая его по любому графику, который вы захотите (или даже незапланированную ручную сборку).

0 голосов
/ 24 июля 2009

Мы используем приложение под названием Luntbuild для управления чем-либо подобным.

  • Сначала вы создаете проект
  • Укажите на муравья, мавена или другого строителя, которого вы используете (Мы просто используем ant-скрипты)
  • Определите SVNадаптер (или другой VCS)

Затем приложение контролирует SVN на наличие изменений и создает / развертывает ваши приложения ...

0 голосов
/ 24 июля 2009

Скачать и установить JetBrains TeamCity - Профессиональная версия бесплатна. Это превосходный сервер непрерывной интеграции, который поддерживает SVN и Maven (среди прочего).

...