2009-07-24 6 views
3

mavenを使用して継続的な統合を設定する方法を理解しようとしています。 SVNで新しいもののためmaven2に基づく継続的な統合

  1. チェック
  2. 変更が検出された場合は、
  3. ビルドをそれらをチェックアウトし、私はこの缶のすべてを考える

を展開:

私は何をしたいことはありますいくつかのシェルスクリプトにプッシュされ、cronによって起動されます。したがって、私たちは自動化された継続的な統合を行います(例えば、夜間ビルド)

私は、mavenにバージョン管理システムを使用するためのSCMプラグインがありますが、リポジトリの変更をチェックする方法結果はチェックアウトを開始します。

は、だから私は

PS私が言及するのを忘れて:)観客を求めています - 私は、既存のアプリケーションのいずれかで面白くありませんよ!彼らは私のVPSサーバーにとっては重すぎます。彼らに

答えて

2

私は、ビルドよりもCIに多くがあるとしてこれを管理するための認識CI toolを使用してお勧めします。

自分のロールを決めたら、maven-scm-pluginのいくつかの目標を使用して出力をキャプチャできます。

あなたがポンポンへのアクセスをしたので、プロジェクトのローカルコピーを持っていると仮定すると、あなたが変更を確認するためにstatusコマンドを実行し、すべての変更をチェックする出力を解析することができます 使用する目的は次のとおりです。

mvn scm:status 

変更されたファイルがある場合は、変更をチェックアウトしてビルドを呼び出すことができます。 しかし、maven-scm-provider-svn link textには、変更されたファイルをスキップできるバグがあります。 Subversionを直接呼び出して、その出力を解析する方がよいかもしれません。

たとえば、次の例は、以前のビルドをクリアし、変更されたコンテンツをチェックアウトしてからdeploy目標を実行します。

mvn clean scm:checkout deploy 

プロジェクトの作業コピーを持っていない場合、あなたはそれを得るためにscm:bootstrap目標を使用することができます。 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のは、あなたがPOMのSCMセクションを設定する必要が転覆して動作させるには:変更のためのポーリングのための代替として

<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> 

hook to subversionようにトンを追加することを検討変更が行われたときにビルドがトリガーされます。 another questionがあります。これを行う上でのポインタを与えることができます。あなたは私が自動化したい主なポイントである任意の変更されたファイル が表示された場合、あなたが言及しているバグのため、私はそれを行う方法を見つけ出すことはできません原因

+0

>> :)おそれ。だから私はおそらく、ユーザーの 'svn update'コマンドを使う方が簡単で、シェルスクリプトの出力を構文解析して入ってくる変更を検出する方が簡単かもしれないという結論に至りました。 これはありがとうございます! – glaz666

+1

あなたは、現在のビルドをチェックするためのキューやフラグを実装していない限り、頻繁なコミットは、このアプローチで問題を起こし始めることができるけれども、私は、あなたのビルドをトリガするためにSubversionのフックを使用して最後にビットを追加しました。 –

+0

スーパー、フックが動作します!ありがとう! – glaz666

0

ダウンロードを助言し、JetBrains TeamCityをインストールしないでください - Professionalエディションは無料です。 SVNとMavenをサポートする優れた継続的インテグレーションサーバです(他のものの中でも)。

1

Mavenは、コードとプロジェクトを格納するリポジトリです。個人的には、私はそれを継続的な統合ツールとして使用しません。

hudsonを見てみましょう、と私はあなたが探しているより多くのものを見つけると思います。他の連続ビルドツールも同様に機能します。リポジトリから最新のバージョンのコードを取得し、必要な任意のスケジュール(またはスケジュールされていない手動ビルド)でビルドすることで動作します。

3

Hudsonをご覧ください。それは無料でオープンソースで、積極的に開発され、数十の便利なプラグインを持ち、優れたMaven2をサポートしています。素晴らしいものです。

また、スタックオーバーフローのfrequently discussedです。

0

Luntbuildというアプリケーションを使用して、そのようなことをすべて管理します。あなたはアリ、Mavenのか、使用している他のいくつかのビルダーへのプロジェクト

  • ポイント(私達はちょうどアリ・スクリプトを使用)
  • は、SVNアダプタ(または他のVCS)を定義します

    • まず

    次に、アプリケーションは、変更のためのSVNを監視し、/、アプリを展開構築する...