hudsonを使ってみる

今さらながらですが、プロジェクト開発サイクルを
エクストリームプログラミング(XP)で
行おうと実践しています。


その中でXPのプラクティスの「継続的インテグレーション」を
実践する為に最近話題のhudson(ハドソン)を使うことにしました。


継続的インテグレーションとは簡単に言うと頻繁にビルドやテストを
実行しましょうってことです。


ユニットテストなんかは膨大になると全実施で数十分
かかるのもざらなのでなかなかローカルPCではやらなくなります。
すると気づいたらユニットテストがエラーになってる。
そして誰も気づかないというさみしい状況になってしまいます。


そこでhudsonさんの登場です。
今回は以下のような流れをhudsonで自動化します。


subversionをポーリングしてコミットをチェック
・更新されていたらsubversionからプロジェクトをチェックアウト
・チェックアウト後にプロジェクト内のant用build.xmlをキック
・ant終了後にantで出力されたレポート等を解析
・ビルドやレポートでエラーあったらメールを送信してお知らせ


自動的にサーバでビルド&テストを行ってくれるので
ストレスなく継続的インテグレーションが行えます。
これでユニットテストも作りがいがあるというものです。

インストール


まずは以下の公式サイトからhudson.warファイルをダウンロードします。
https://hudson.dev.java.net/


hudsonの実行方法は2つ


Javaコマンドによる起動
アプリケーションサーバへデプロイ


hudsonは簡易アプリケーションサーバを実装していて
以下のJavaコマンドで起動できます。

java -jar hudson.war


もちろんwarファイルなのでアプリケーションサーバ
デプロイしても動作します。


あとは

http://localhost:8080/


にアクセスするだけで利用できます。


設定情報などのデータはすべてユーザフォルダの下に
hudsonフォルダが作成され保存されます。
その為、DBの設定なども必要ありません。
こんなに簡単で良いの?って感じです。

使ってみる


「Hudsonの管理 > システムの設定」でメールサーバ等を設定したあと、
「新規ジョブ作成」でジョブを作成します。
フリースタイル・プロジェクトを選んで
ソースを取得するCMSやビルド方法、ビルド後の処理を
つらつらと設定します。


なんと、以上で勝手に継続ビルドをやってくれます。


まあ、その後Antを作りこんだり、プラグインを
入れてみたりとやることはありますが、
antなどでワンクリックビルドが実現できていれば
基本はこれだけです。すばらしい。


今回私はさらにAntを作りこんでビルドはもちろん


JUnitによるユニットテストの実行結果のレポート表示


・emmaというカバレッジ計測を使ってカバレッジレポートを出力
 (カバレッジツールはCoberturaやCloverなんかもありますが
  eclipseのeclemmaプラグインのを使っているのでemmaにしました)


を行うように設定しました。


あと、以下のプラグインを入れてみました。


・email ext plugin
 送信メールをカスタマイズできます。
 もちろん日本語でメール送信するようにしました。


redmineプラグイン
 タスク管理ツールredmineと連携できます。
 コミット詳細のチケット番号等からリンクが可能になります。


・emmaプラグイン
 antで出力したemmaのカバレッジ結果を表示してくれます。


hudsonを使ってみて思ったことは
ものすごく親切設定ということです。
インストールも設定もほとんど迷うことはありませんでした。


Javaのプロジェクトならず、
PHPRubyのプロジェクトもビルドできるプラグインもありますし、
ユニットテストは作ったけど最近実行してないなー。
なんて人は是非使ってみてはいかがでしょうか。