2008年2月19日火曜日

Hudsonを使ってみる

HudsonでMavenとSubversionを使った管理をやってみる

せっかくMaven2でレポート出力をやってるんだから、その履歴をとりたいなぁ、と。さらにTDDでやってるし、TestCaseの積み上げからそれらがGreenになっていく過程も見たい、と。んでHudsonでCIする事に。各種レポートを出力するためのMavenのpom.xmlの定義については過去のエントリを参考に。
  1. 開発ページから最新モジュールをdownloadしてくる。「hudson.war」というファイル名。
  2. ついでにPlugin一覧から「Cobertura Plugin」「FindBugs Plugin」をdownloadしてくる。それぞれ「〜.hpi」というファイル名のはず。
  3. hudson.warをどこか適当なフォルダに配置する。ここから起動する。
  4. hudson.warを配置したフォルダで以下のコマンドを実行する。javaにはpathが通っていることが前提。 java -jar hudson.war
  5. installと起動はこれでOKOK。簡単。起動しているか確認するために、http://localhost:8080/を開いてみる。「Welcome to Hudson! Please create new jobs to get started.」と書かれたページが見えればOKOK!
  6. create new jobs...ではなく、まずはhudsonの設定をするために、左側の「Manage Hudson」をclickする。
  7. 「Manage Hudson」というページに遷移するので、「System Configuration」をclickする。
  8. いくつか設定項目があるが、今回は以下を設定する。
    • JDKs 「Add」をclickしてjavaをinstallしてあるパスを設定する(例:/usr/lib/jvm/java-1.5.0-sun-1.5.0.13)。名前はjdk1.5.0_13とかそんなのでいいと思う。
    • Shell 自分の場合は最初から「/bin/sh」が設定されていたのでそのまま。
    • Maven 「Add」をclickしてmavenをinstallしてあるパスを設定する(例:/opt/maven-2.0.7)。名前はmaven-2.0.7とかにしてみた。そういや2.0.8を入れるのを忘れているな。
    • Emailとかもあるが、とりあえず置いとくとして、自分の場合は上記のようにふたつの項目を設定するだけで良かった。上記を設定したら「Save」で保存する。
  9. create job...の画面に戻るが、もう一度「Manage Hudson」の設定画面へ戻り、「Manage Plugins」をclickする。
  10. 「Upload Plugin」というファイルアップロードフォームがあるので、「cobertura.hpi」「findbugs.hpi」のふたつをアップロードする。ひとつアップロードした時点で赤字で「New plugins...restart Hudson.」と出るが、気にせず二つ目もアップロードする。
  11. Hudsonを再起動して、http://localhost:8080/を開く。今渡こそ「create new job」する。
  12. 「Job name」に適当な名称を設定する。実質Project名を入れると良いんだと思う。プロジェクトの種類の選択肢として「フリースタイル云々」「Maven2プロジェクト云々」とあって、Maven2を選びたいが最後の「(ベータ)」が気になるので「フリースタイル」を選択する。
  13. Projectの設定画面に遷移する。たくさん設定項目があるが、上から順番に。
    • 「Source Code Management」 自分の場合はGoogleCodeなのでSubversion。必要な設定を入力する。例えば「RepositoryURL」に「https://shin1.googlecode.com/svn/trunk/studyHudson」のように設定。「Local module directory」は(optional)となっているので空欄のままにした。
      • 認証の種類によってはここでエラーが発生する場合がある。GoogleCodeなら発生するはず。
      • 素直にLinkをClickして、認証の種類を選んだり、必要な情報を設定したりする。
      • 認証関連を設定した直後にトップページまで戻されてしまった場合、めげずに設定中のProjectを開き、左側の「Configure」をclick。
    • 「Build」 今回はmaven2を使うのが目的だから、「Maven version」で先の手順で登録済みのmavenを選択する。Goalsは「clean site」とした。
    • 「Post-build Actions」 ビルド後の動作の設定で、たくさんチェックボックスが並んでいるはず。以下をチェックして、必要な設定をする。
      • 「Publish JUnit test result report」 テスト結果のレポート。maven2のpomで設定した、surefire-pluginがxmlを出力するフォルダを設定する。例えば「**/target/surefire-reports/*.xml」。
      • 「Publish FindBugs Analysis Results」 FindBugsのレポート。findbugs.xmlの出力場所をpom.xmlからいじったりしていなければ、チェックボックスをチェックするだけで何も設定し無くても問題は起こらないはず。
      • 「Publish Cobertura Coverage Report」 coberturaによるcoverageレポート。「Cobertura xml report pattern」に「**/target/site/cobertura/coverage.xml」のように設定する。 ちなみに、pom.xmlの設定について。「/project/reporting/plugins/plugin」で設定したcobertura-maven-pluginの設定で、「configuration」配下の「formats」要素の中に「xml」「html」のふたつを登録しておくのがおすすめ。xmlが無ければhudsonのプラグインがデータを拾えない、htmlが無ければmaven reportでhtmlが出力されない、という結果になる。何も設定していなければ、htmlだけが設定された動作をする。
    • これでプロジェクトの設定は終了なので保存する。
  14. 設定が終了して保存した後は、プロジェクトのページに遷移しているはず。「CoverageReport」とかのアイコンがあっていかにもclickしたくなるが、まずは左側のlinkから「Build Now」を選択する。
  15. すると、左下の「Build History」に新たなbuildが追加され、ぐるぐるした画像が表示される。この時、build中のbuildリンクをclickすると、buildの状態を見る画面に遷移し、そこで「Console Output」を開くと標準出力をリアルタイムに確認できる。Comet使ってるのかな?
  16. buildが失敗するなら、失敗したbuildのConsole output等で確認。成功したなら各種Reportを見ることができる。
  17. buildが問題なく通ることを確認したら、後は定期的に自動buildをさせる設定を行う。Projectの設定画面で、「Build Triggers」で「周期的に実行」にチェックをいれ、スケジュールを設定する。スケジュールの指定は「cron」の設定とほぼ同じ、という説明がヘルプに書かれている。左から「分」「時」「日」「月」「曜日」の指定となるらしい。UbuntuでGUIベースでしか使わないLinux弱者だからイマイチわからんw ここで結構はまったw
    • 一時間おきにbuildをかけたい場合。 00 * * * * とすると「毎時0分」にbuildが走る。
    • 時間を特定してbuildをかけたい場合。 00 08 * * * 00 12 * * * 00 15 * * * とすると、「8時」「12時」「15時」にbuildが走る
  18. 他にはメールでの通知機能もある。これは、Hudsonのシステムの設定でSMTPの設定等が必要になるので注意。
他にも、TracPluginやらIRCでの通知Pluginがあるみたい。ほんっっと便利だなぁ。

コメントを投稿