Jenkinsの導入〜MavenやSonarとの連携方法までを紹介します。SubversionやGitとの連携は次回以降に紹介したいと思います。
まずはJenkinsの準備。
http://jenkins-ci.org/ からWARファイルをダウンロードし、javaコマンドでサーバを起動します。
C:\root\usr\local>java -jar jenkins.war Running from: C:\root\usr\local\jenkins.war webroot: $user.home/.jenkins 1 03, 2013 11:01:01 午後 winstone.Logger logInternal 情報: Beginning extraction from war file Jenkins home directory: C:\Users\XXXXXXXXX\.jenkins found at: $user.home/.jenkins 1 03, 2013 11:01:12 午後 winstone.Logger logInternal 情報: HTTP Listener started: port=8080 1 03, 2013 11:01:12 午後 winstone.Logger logInternal 情報: AJP13 Listener started: port=8009 1 03, 2013 11:01:12 午後 winstone.Logger logInternal 情報: Winstone Servlet Engine v0.9.10 running: controlPort=disabled 1 03, 2013 11:01:13 午後 jenkins.InitReactorRunner$1 onAttained 情報: Started initialization 1 03, 2013 11:01:19 午後 jenkins.InitReactorRunner$1 onAttained 情報: Listed all plugins 1 03, 2013 11:01:19 午後 jenkins.InitReactorRunner$1 onAttained 情報: Prepared all plugins 1 03, 2013 11:01:19 午後 jenkins.InitReactorRunner$1 onAttained 情報: Started all plugins 1 03, 2013 11:01:19 午後 jenkins.InitReactorRunner$1 onAttained 情報: Augmented all extensions 1 03, 2013 11:01:19 午後 jenkins.InitReactorRunner$1 onAttained 情報: Loaded all jobs 1 03, 2013 11:01:22 午後 org.apache.sshd.common.util.SecurityUtils$BouncyCastleRegistration run 情報: Trying to register BouncyCastle as a JCE provider 1 03, 2013 11:01:23 午後 org.apache.sshd.common.util.SecurityUtils$BouncyCastleRegistration run 情報: Registration succeeded 1 03, 2013 11:01:23 午後 org.jenkinsci.main.modules.sshd.SSHD start 情報: Started SSHD at port 49464 1 03, 2013 11:01:23 午後 jenkins.InitReactorRunner$1 onAttained 情報: Completed initialization 1 03, 2013 11:01:23 午後 hudson.TcpSlaveAgentListener <init> 情報: JNLP slave agent listener started on TCP port 49465 1 03, 2013 11:01:24 午後 hudson.WebAppMain$2 run 情報: Jenkins is fully up and running
ブラウザから http://localhost:8080/ にアクセスすると下記のような画面が表示されます。
次はMavenでのビルドですが、Sonarとの連携も考慮し、まずはSonarを起動しておきます(Sonarについての詳細は http://d.hatena.ne.jp/mokimokisan/20130101/1357055791 を参照)。
c:\root\usr\local\sonar-3.4\bin\windows-x86-64>StartSonar.bat wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2013-01-03 23:17:08.340:INFO::Logging to org.sonar.application.FilteredLogger@339cefd6 via org.sonar.application.FilteredLogger jvm 1 | 2013-01-03 23:17:08.411:INFO::jetty-6.1.25 jvm 1 | 2013-01-03 23:17:09.445:INFO::NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet jvm 1 | JRuby limited openssl loaded. http://jruby.org/openssl jvm 1 | gem install jruby-openssl for full support. jvm 1 | 2013-01-03 23:17:57.365:INFO::Started SelectChannelConnector@0.0.0.0:9000
下準備ができたので、JenkinsにMavenでのビルドジョブを登録します。
まずは、新規ジョブ作成から [Maven2/3プロジェクトのビルド] を選択します。
※ビルドするプロジェクトは http://d.hatena.ne.jp/mokimokisan/20130101/1357055791 で使ったプロジェクトと同じものです。
ファイルは
20121228_SpringTest.zip
からダウンロードできます。
次画面で「Maven2/3のインストール先を設定する必要があります。」と表示されるので [システムの設定] をクリックします。
JDKとMavenのインストールディレクトリを指定し、画面左下の [保存] をクリックします。
ビルドの設定では、試しに前処理として clean install -DskipTests=true
ビルドとして sonar:sonar を指定し、画面左下の [保存] をクリックします。
※ビルドの箇所に clean install -DskipTests=true sonar:sonar と記述すると sonar:sonar でもテストが省略されてしまいます。
ビルドが成功すると下図のようになります。失敗した場合はコンソール出力のログから原因を探って下さい。
Sonar http://localhost:9000/ にアクセスしてTime Machineをみると、Jenkinsから実行されたテストのメトリクスが収集されてSonarに登録されていることが分かります。