Hudsonプラグインまとめ

Hudsonには多くのプラグインがあるわけですが、どれをインストールすればいいのかよくわからなかったりします。

ちなみにプラグイン数やダウンロードランキングは以下参照

またプラグインの説明が英語しかなく画面キャプチャーも少ないので使い方がいまいちわからなかったりします。
使い方に関しては実際にインストールして試行錯誤するのが早いとは思いますが、
どれをインストールすればいいのかに関しての情報があんまり無いような気がするので独断と偏見で書いてみたいと思います。なおJavaプロジェクトを前提とします。

SCM連携

Subversion使っているならHudsonがデフォルトでサポートしているので何もする必要無し。
CVS, VSSは、、、いってよしっというわけにもいかない状況があるのでプラグインを入れてください。Git, Mercurialも同様です。っていうかこの4つは試してません。

プラグイン 説明があるURL ダウンロード先URL
CVS Plugin CVS Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=11981&expandFolder=11981&folderID=11981
Visual SourceSafe Plugin Visual SourceSafe Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7645&expandFolder=7645&folderID=11981
Git Plugin Git Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9063&expandFolder=9063&folderID=11981
Mercurial Plugin Mercurial Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7891&expandFolder=7891&folderID=11981

BTS連携

これは使っているBTSに応じて入れたほうがいいです。Redmine PluginはTrac Pluginを真似て作ったような感じなので似ています。URLとリポジトリブラウザを設定すればすぐ使えます。JIRA PluginとMantis Pluginは使ったこと無いのでよくわかりませんが、Mantis PluginはJIRA Pluginを参考にしつつも独自路線を歩んでいるようです。

プラグイン 説明があるURL ダウンロード先URL
Trac Plugin Trac Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=6770&expandFolder=6770&folderID=11981
Redmine Plugin Redmine Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=10160&expandFolder=10160&folderID=11981
JIRA Plugin JIRA Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7057&expandFolder=7057&folderID=11981
Mantis Plugin Mantis Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9137&expandFolder=9137&folderID=11981

ジョーク系

これも1つか2つ入れとくといいと思います。というのもこういうので興味を引ければHudsonを見るようになってくれると思うからです。Hudson導入したはいいけど誰も見てくれないのでは意味がありません。

大規模プロジェクトでいきなりhud子さんやhud美さんのような萌え系を入れてしまうとどん引きする人がいるかもしれないのでまずはむさいおっさんからでいいのではないでしょうか。

ただChuckNorrisとBruceSchneierは画像表示の位置が同じみたいで同居できないですね。。。

プラグイン 説明があるURL ダウンロード先URL
Emotional Hudson Plugin Emotional Hudson Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=8963&expandFolder=8963&folderID=11981
ChuckNorris Plugin ChuckNorris Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=11708&expandFolder=11708&folderID=11981
BruceSchneier Plugin BruceSchneier Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=11845&expandFolder=11845&folderID=11981

ビルド通知

プラグイン 説明があるURL ダウンロード先URL
Email-ext plugin Email-ext plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=8092&expandFolder=8092&folderID=11981

CIのポリシーとしては頻繁にビルドするのが正しいわけです。ただビルドのたびにメールが送信されるのはうざいです。
Hudsonではビルド失敗、不安定ビルドのときとその状態から回復したときのみメールが送信されます。つまりビルドが成功し続ければメールは送信されません。

しかしいっぽうでは定期的なバッチ処理などでビルドが成功しようが失敗しようがメールを送信したい場合があります。
その場合にこのプラグインを使います。

僕は毎日夜中にステップカウントを走らせてその結果をメールするようにしてます。

グラフ

プラグイン 説明があるURL ダウンロード先URL
Plot Plugin Plot Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7788&expandFolder=7788&folderID=11981

Javaのプロパティファイルに

YVALUE=100

みたいな感じで書かれたファイルを読み込んで表示します。X軸はビルド番号なのでY軸の値をプロパティファイルに書くようにします。
ステップカウント結果をこれでグラフ表示すればPMが悶絶すること間違いなしw

参考
http://toshiyukikawanishi.net/modules/wordpress/index.php?p=192

コード解析

プラグイン 説明があるURL ダウンロード先URL
FindBugs Plugin FindBugs Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7826&expandFolder=7826&folderID=11981
Checkstyle Plugin Checkstyle Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9183&expandFolder=9183&folderID=11981
PMD Plugin PMD Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=8968&expandFolder=8968&folderID=11981
DRY Plugin DRY Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=10359&expandFolder=10359&folderID=11981
Warnings Plugin Warnings Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9182&expandFolder=9182&folderID=11981
Task Scanner Plugin Task Scanner Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7892&expandFolder=7892&folderID=11981

上から4つまではそれぞれFindBugs, Checkstyle, PMD, PMD's Copy Paste Detector (CPD)の出力を読み込んで結果表示する。
なのでFindBugs, Checkstyle, PMD, PMD's Copy Paste Detector (CPD)を実行するようにAntのbuild.xmlなりMaven2のpom.xmlに書く必要があります。

Warningsはコンパイラの警告を読み込んで結果表示する。javacのオプションで-Xlintの指定が必要

Task ScannerはTODO, FIXMEといったコメントを読み込んで結果表示する。これはビルドスクリプトをいじる必要が無いので導入は一番容易だと思います。

なお上記のプラグインを使う場合は以下のプラグインもインストールが必要です。

プラグイン 説明があるURL ダウンロード先URL
Static Code Analysis Plugin Static Code Analysis Plug-ins - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=11928&expandFolder=11928&folderID=11981

カバレッジ

プラグイン 説明があるURL ダウンロード先URL
Cobertura Plugin Cobertura Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=7954&expandFolder=7954&folderID=11981

Coberturaを実行した結果のcoverage.xmlを読み込ませて表示します。

参考
404 shin1のつぶやき ないわー Not Found: Hudsonを使ってみる

ただしCoberturaはUTF-8の日本語が含むソースはLexicalエラーになるのでその場合はCobertura自体のソース改造が必要です。

その他

プラグイン 説明があるURL ダウンロード先URL
Disk Usage Plugin Disk Usage Plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9468&expandFolder=9468&folderID=11981
The Continuous Integration Game plugin The Continuous Integration Game plugin - hudson - Hudson Wiki https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=9005&expandFolder=9005&folderID=11981

ディスク使用量を計算するプラグインとビルド成功時に加点、ビルド失敗時に減点されるプラグイン
ま、ゲーム感覚でやるにはいいかも。間違っても個人の能力評価に使ってはいけないです。

まとめ
使っているSCM, BTSに応じたプラグインはいれるべきでしょう。ジョーク系も1つか2つ入れていいでしょう。
コード解析はビルドスクリプトの編集が面倒なのでとりあえずはTask Scanner Pluginだけでもいれておけばいいかも。
JUnitのテストもやるならカバレッジとるのもいいと思います。ただビルドが遅くなります。ま、それ以上にテスト実行のほうが遅いと思うのであんまり気にしなくていいかも。
バッチ、ビルド昇進、認証、リリース、デプロイなどに関するプラグインについては試してないのでよくわかりません。