本手順は FreeBSD 9.x プラットフォームでの SonarQube 3.6 のセットアップを対象にしています。
SonarQube は、アプリケーションのソースコードをメトリックス解析によって定量的に評価して品質向上を支援するオープンソース製品です。プラグインによって機能拡張が可能で、コミュニティによって多くのプラグインが公開されています。
1. セットアップの内容
SonarQubeはNginx(80) + Jetty(8080)の構成で稼動させます
データベースはMySQLを使用します
ソースコード解析は Apache Ant によって行い、Maven2 を使用しません
※ SonarQube は 公式には Tomcat、Jetty 上で動作するとされていますが、FreeBSD9.x の Tomcat7 ではハングアップして正常に動作しませんでしたので、 Jettyを使用します。
2. 前提作業
Sonarのセットアップには以下の作業が済んでいることが前提になります。
OpenJDK7がインストール済みであること
Apache Antがインストール済みであること
MySQLがインストール済みであること
3. Jettyのインストール
portsを使用して Jetty をインストールします。
cd /usr/ports/www/jetty/
make install
/usr/local/jetty にインストールされます。
vi /etc/rc.conf
以下の記述をrc.conf に追加します。
jetty_enable="YES"
4. データベースのセットアップ
MySQLにスキーマとsonarユーザを作成しアクセス権限を与えます。
mysql -u root -p
create database sonar character set utf8 collate utf8_bin;
CREATE USER 'sonar'@'%' IDENTIFIED BY '****';
GRANT ALL PRIVILEGES ON `sonar`.* TO 'sonar'@'%';
exit;
**** の部分はパスワードです。
5. SonarQube のインストール
SonarQube は Ports がないので手動でインストール作業を行います。
wget http://dist.sonar.codehaus.org/sonar-3.6.zip
unzip sonar-3.6.zip
vi sonar-3.6/conf/sonar.properties
sonar.propertiesをMySQLを使用するように変更する。
sonar.jdbc.username: sonar
sonar.jdbc.password: ****
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.driverClassName: com.mysql.jdbc.Driver
**** の部分はパスワードです。
cd sonar-3.6/war
ant -DsonarHome=/home/www/sonar/sonar-3.6/
chown www:www sonar.war
chown -R www:www /home/www/sonar/sonar-3.6/
mv sonar.war /usr/local/jetty/webapp/
/usr/local/etc/rc.d/jetty start
初回起動はデータベースにSonarの使用するテーブルが作成されるので、非常に時間がかかります。
Sonarのアプリケーションログを見ながら待ちます。
tail -f /usr/www/sonar/sonar-3.6/logs/*
6. Nginxの設定を行う
vi /usr/local/etc/nginx/nginx.conf
http{
~ 省略 ~
upstream sonar-backend {
server 127.0.0.1:8080;
}
server{
listen 80;
~ 省略 ~
location /sonar/ {
proxy_set_header X-FORWARDED-HOST $host;
proxy_pass http://sonar-backend/sonar/;
}
}
7. SonarQube の設定を行う
Jetty を起動して 管理者ユーザでSonar のシステム設定を行います。
7.1. ローカライズする
ブラウザでSonar サーバーにアクセスする。
管理者ユーザでログインする。
user:
admin
password:
admin
ログインしたらadminユーザのパスワードは変更しておきましょう。
以下の操作で日本語化プラグインを導入する。
設定 >> システム
システム >> アップデートセンター
Available Plugins
Localization >> Japanese Pack >> インストール
アプリケーションサーバーを再起動することでプラグインが有効になります。
/usr/local/etc/rc.d/jetty restart
8. 運用手順
起動
/usr/local/etc/rc.d/jetty start
停止
/usr/local/etc/rc.d/jetty stop
解析
対象プロジェクトのディレクトリに移動してAntを実行する。
ant -f build-sonar.xml
ビルドファイルの例
<?xml version="1.0" encoding="UTF-8"?>
<project default="sonar" name="yosbits-core" basedir="." xmlns:sonar="antlib:org.sonar.ant">
<property name="sonar.jdbc.url"
value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8" />
<property name="sonar.jdbc.username" value="sonar" />
<property name="sonar.jdbc.password" value="****" />
<property name="sonar.projectKey" value="yosbits:core" />
<property name="sonar.projectName" value="yosbits-core" />
<property name="sonar.projectVersion" value="1.0.0" />
<property name="sonar.language" value="java" />
<property name="sonar.sources" value="src/main/java" />
<property name="sonar.host.url" value="http://localhost/sonar" />
<property name="sonar.sourceEncoding" value="UTF-8" />
<target name="sonar">
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath path="sonar-ant-task-2.1.jar" />
<classpath path="mysql-connector-java-5.1.24.jar" />
</taskdef>
<sonar:sonar />
</target>
</project>
sonar-ant-task-*.jar は
ここ から入手できます。