Hudsonを試してみた

継続的インテグレーション(CI: Continuous Integration)は、プロジェクトのビルドとテスト、更にはそれらのレポートの作成までを全て自動化する事です。CIツールとしては、Continuum が有名ですが、SubversionMaven2などと組み合わせて使用します。以前、少しだけContinuum を使ったことがありますが、本格的に使用することもありませんでした*1。そこでpilikaのプロジェクトで試してみました。
最後に調査してから1年以上経っていたので、改めて調査してみると、最近はHudsonの方が評判が良いとの事で、試してみました。Hudsonの主な特徴は以下の通りです。

  • J2EEのWebアプリケーションで、Tomcatなどにデプロイするだけで使用できる
  • データベースなどを用意する必要がない
  • メッセージ/ヘルプが日本語に対応
  • Maven2のプロジェクトだけでなく、柔軟にプロジェクト管理が可能
  • プラグインによる拡張性が高い

さて、試してみた感じですが、インストールはTomcatのWebappsに配置するだけで完了です。Hudsonにアクセスすると、Tomcatのルートディレクトリに.hudsonというディレクトリが作成され、そこに設定ファイルなどが保管されます。

次に新しくジョブを作成します。ジョブには汎用的なジョブだけでなくMaven2のプロジェクトをジョブとして設定することもできます。Maven2はビルドからテスト、レポート作成までまとめて行えるプロジェクト管理ツールである為、予めMaven2でプロジェクトの設定をしておけば細かい設定が不要となるわけです。とはいえ、Maven2を使わないプロジェクトの場合でもHudsonはサポートしている所が、Continuum との大きな違いとなっているようです。
最後にソースコード管理システム(SCM)の設定を行い、定期的に実行する場合はCron風の設定を行います。

手順としてはこれだけです。ほかにも色々と機能はあるようですが、Maven2をある程度まで設定できる開発者であれば、簡単に導入できますね。導入して動いている様子はこちらから確認してみてください。

テストが…

レポート用のプラグインを導入してた所、テストが3倍行われてしまっています。なんでだろう?
1件、テストに失敗しているのですが、これもローカル環境では通るテストなので、調査が必要ですね・・・。

追記(2009.01.02 14:00)

3倍から2倍になりました。
どうもsiteのgoalで使用しているレポート用のプラグインはそのままの設定の場合、testのgoalでテストを完了していても、別途にテストを実行するようです。したがって1回のMavenのプロセスで2回以上のテストが実行される、と。Hudsonではプロセス内で実行されたテストの回数を何らかの方法で取得しているようですが、ここで同じテストでも2回走れば2回とカウントされてしまっている、と推測されます。
実際に、Surefire Reportの方はテストを重複して行わない設定が出来るので、試してみたところ、1回分は減りました。

後はCoberturaの方です。

*1:というか、提案したけど聞く耳持ってもらえない環境、乙