「Maven,Jenkins,Sonarの導入手順」の版間の差分
2行目: | 2行目: | ||
本ページでは、Javaソフトウェア管理ツール群である、Maven・Jenkins・Sonarの導入手順を記述します。本ページのゴールは、取り上げる3つのツールを組み合わせることにより、複数人で開発しているソフトウェアの品質をリアルタイムで確認できる環境を得ることです。 | 本ページでは、Javaソフトウェア管理ツール群である、Maven・Jenkins・Sonarの導入手順を記述します。本ページのゴールは、取り上げる3つのツールを組み合わせることにより、複数人で開発しているソフトウェアの品質をリアルタイムで確認できる環境を得ることです。 | ||
Sonarを動作させるには、1GByteを超えるメモリ容量が必要になります。 | |||
== 環境 == | == 環境 == |
2011年2月9日 (水) 14:50時点における版
本ページでは、Javaソフトウェア管理ツール群である、Maven・Jenkins・Sonarの導入手順を記述します。本ページのゴールは、取り上げる3つのツールを組み合わせることにより、複数人で開発しているソフトウェアの品質をリアルタイムで確認できる環境を得ることです。
Sonarを動作させるには、1GByteを超えるメモリ容量が必要になります。
環境
- OS : CentOS 5.5
- Maven : 3.0.2
- Jenkins : 1.396
- Sonar : 2.5
- Tomcat : 7.0.8
- MySQL : 5.1.54
APサーバとDBサーバは、パフォーマンスと管理のしやすさの観点から、JenkinsとSonar内蔵されている物を使用せず、TomcatとMySQLを使用します。
インストール
Tomcat
入手先 : http://tomcat.apache.org/
$ tar zxvf apache-tomcat-7.0.8.tar.gz # mv apache-tomcat-7.0.8 /usr/local/
Maven
入手先 : http://maven.apache.org/
$ tar zxvf apache-maven-3.0.2-bin.tar.gz # mv apache-maven-3.0.2 /usr/local/
Sonar
入手先 : http://www.sonarsource.com/
$ unzip sonar-2.5.zip # mv sonar-2.5 /usr/local/
WARファイル生成のために必要なライブラリが不足しているので、ant-nodeps-1.7.0.jarをダウンロードし、「 /usr/local/sonar-2.5/war/apache-ant-1.7.0/lib/」に保存します。
参考 : http://jira.codehaus.org/browse/SONAR-2109
MySQL
入手先 : http://www.mysql.com/
$ tar zxvf mysql-5.1.54.tar.gz $ cd mysql-5.1.54 $ ./configure $ make # make install
Jenkins
入手先 : http://jenkins-ci.org/
# cp jenkins.war /usr/local/apache-tomcat-7.0.8/webapps/
設定
MySQL
ユーザ「mysql」を作成し、DBを初期化します。
# /usr/sbin/useradd mysql # /usr/local/bin/mysql_install_db --user=mysql
DBを起動し、rootのパスワードを設定します。
# /usr/local/bin/mysqld_safe --user=mysql & # /usr/local/bin/mysqladmin -u root password <password>
Sonarでアクセスするためのユーザ(sonar)とパスワード(sonar)を作成し、DBを作成します。
# mysql -u root -p
mysql> grant all privileges on *.* to sonar@localhost identified by 'sonar' with grant option;
mysql> create database sonar default character set utf8;
Tomcat
「conf/server.xml」の「Connector」要素に「URIEncoding="UTF-8"」を加えます。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
参考 : http://wiki.jenkins-ci.org/display/JA/Tomcat
Sonar起動時のOutOfMemory発生を防ぐため、Tomcatの起動オプションを追加します。「/etc/bashrc」等に以下を追記します。
export CATALINA_OPTS="-Xms1024m -Xmx1024m -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -XX:MaxPermSize=256m"
参考 : http://docs.codehaus.org/display/SONAR/Install+Sonar#InstallSonar-Step4Startserver
Sonar
Tomcatで動作させるためのアーカイブファイルである「sonar.war」を作成します。
MySQLを使用するための設定を行います。「conf/sonar.properties」のDerbyの設定をコメントアウトし、MySQL用の設定行のコメントアウトを元に戻します。
Before :
sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver sonar.jdbc.validationQuery: values(1)
After :
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 sonar.jdbc.driverClassName: com.mysql.jdbc.Driver sonar.jdbc.validationQuery: select 1
WARファイルのビルドを実行します。必ずDB設定の後に実行してください。
- cd /usr/local/sonar-2.5/war/
- ./build-war.sh
ビルド時に以下のエラーが出た場合は、ant-nodeps-1.7.0.jarが「apache-ant-1.7.0/lib/」に存在することを確認してください。
BUILD FAILED
/usr/local/sonar-2.5/war/build.xml:63: Problem: failed to create task or type replaceregexp
Cause: the class org.apache.tools.ant.taskdefs.optional.ReplaceRegExp was not found.
This looks like one of Ant's optional components.
Action: Check that the appropriate optional JAR exists in
-/usr/local/sonar-2.5/war/apache-ant-1.7.0/lib
-/root/.ant/lib
-a directory added on the command line with the -lib argument
Do not panic, this is a common problem.
The commonest cause is a missing JAR.
This is not a bug; it is a configuration problem
ビルドが正常に終了すると、同一ディレクトリに「sonar.war」が生成されます。これを、Tomcatのwebappsにコピーします。
# cp sonar.war /usr/local/apache-tomcat-7.0.8/webapps/
Maven
MySQLに接続するための設定を行います。
以下を「/usr/local/apache-maven-3.0.2/conf/setting」の「profiles」要素の中に追記します。
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- EXAMPLE FOR MYSQL -->
<sonar.jdbc.url>
jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<!-- SERVER ON A REMOTE HOST -->
<sonar.host.url>http://<HOST_NAME>:8080/sonar</sonar.host.url>
</properties>
</profile>
その他
「MAVEN_HOME」「JENKINS_HOME」の環境変数を設定します。
export MAVEN_HOME=/usr/local/apache-maven-3.0.2/ export JENKINS_HOME=/usr/local/jenkins/
JenkinsがMavenのコマンドである「mvn」を実行するために、「/usr/local/apache-maven-3.0.2/bin/」をPATHに加えます。
起動
MySQL
# /usr/local/bin/mysqld_safe --user=mysql &
Tomcat
# /usr/local/apache-tomcat-7.0.8/bin/startup.sh
「http://<ホスト名>:8080/jenkins」でJenkinsのページにアクセスできます。
「http://<ホスト名>:8080/sonar」でSonarのページにアクセスできます。
初期起動時は、Sonar用のDB初期化処理が動くのでページにアクセスできるようになるまでに多少時間がかかります。
Sonarの品質管理画面を更新
Sonar初期起動時は、プロジェクトが何も登録されていません。ここでは、実際にプロジェクト作成する所から、Sonarでソースコードの品質を確認するまでの手順を記述します。ここでの手順はあくまで参考なので、この通りに実行しなくても良いです。
Subversionリポジトリを作成する
Tomcatが動作しているマシンに、Subversionリポジトリを作成します。
# mkdir /var/lib/svn/sonar-sample -p # svnadmin create . # svnserve -d --listen-port 8001 -r .
匿名ユーザでもコミットができるように「 /var/lib/svn/sonar-sample/conf/svnserve.conf」を編集します。
Before :
# anon-access = read
After :
anon-access = write
Mavenプロジェクトを作成してコミットする
ここでは、WindowsのEclipse 3.6(Pleades All in One)を使用して、MavenプロジェクトをSubversionにコミットする手順を記述します。
m2eclipseを使用して、Mavenプロジェクトを作成します。m2eclipseが導入されていない場合は、ここ http://m2eclipse.sonatype.org/から入手してください。
Mavenプロジェクトを作成します。
アーキタイプは適当に選択してください。(画像は省略しています)
値を適当に入力します。
Mavenプロジェクトが作成されます。
Subversionにインポートします。
Jenkinsでジョブを設定する
先ほどコミットしたプロジェクトをジョブとして設定します。
最初に、「Jenkinsの管理」->「システムの設定」からMavenの設定を行います。
次に、「新規ジョブ作成」からジョブを作成します。
「ソースコード管理システム」と「Maven」と「ビルド」の項目を変更します。
「ビルド実行」を選択すると、ビルドが開始されます。
コンソール出力の最後に「Finished: SUCCESS」と表示されていれば、正常に終了しています。
再度、「http://<ホスト名>:8080/sonar」にアクセスると、「sonarsample」が追加されています。
リンクから、ソフトウェア品質の状態が確認できます。
更新履歴
- ページ作成 -- 2011年2月9日 (水) 23:27 (JST)