Hudson(Jenkins)とSonarを連携させた話

Sonar plugin - hudson - Hudson Wikiを入れて適当に設定しただけなんだけど。
しかし、みんな2008年ころからSonarを知ってたのか。すごいなー。

GlassfishだとSonarがホストできなかった

Glassfishを使ってみたくて試したけど、Glassfishのwebコンソールからwarをアップしてもデプロイが完了しない。
リポジトリマネージャのNexusを入れたときも思ったけど、当たり前だけどやっぱりTomcatのがラクだわ。

まー、それぞれ

でもいいと思うけど。

Sonarはメモリ喰い

  • 最低1GBのヒープ、256MBのパーマネント領域が必要って書いてる
  • プロジェクト多数でグラフ生成が頻繁ならそうなんだろう
  • とりあえずという意味ならTomcatのデフォルトでいい
  • gcログとってるので経緯をみる

Hudson

webappsに置けば完了。すばらしい。

Sonar Pluginをインストール

Hudsonのプラグインマネージャーから。ものすごくラク。すばらしい。

Sonar

unzip

Sonar実行時にもSONAR_HOMEというのが必要らしいので、今後も残しておけるところに置いたほうがいい。
/optとかに置くことにした。

DB作成

Java DB(Derby)だときついよと書いてあるけど、Derbyでもいいんじゃないの?
Derbyなら以下の手順は不要。
mysqlと連携させた。

/opt/sonar-2.5/extras/database/mysql/create_database.sql

を実行。

ビルド

cd /opt/sonar-2.5/war/

移動する必要あり。なぜならビルドスクリプトに

./apache-ant-1.7.0/bin/ant

って書かれているから。

ant-nodeps-1.7.0.jar が必要

Sonar2.5なら。
fixed for 2.6 みたいだから2.6からはこの手順は不要になるだろうね。
できたwarをwebappsに配置。
デプロイ後に設定を変更する場合は

webapps/sonar/WEB-INF/classes/conf/sonar.properties

を編集。
DB接続設定まわりやSONAR_HOME

sonar.home=/opt/sonar-2.5

を変えるときも適宜編集。

Hudsonの全体設定のほうでSonarの情報を渡す

サンプルとしてcommons langをビルドしてみる。

http://svn.apache.org/repos/asf/commons/proper/lang/trunk

できた!
けど、スクリーンショットを撮るのを忘れてた。