Jenkins で Scala (lift) プロジェクトのテスト結果とカバレッジをグラフ表示する
ある日突然「Scala (lift) のプロジェクト作ったから Jenkins でテスト結果とカバレッジをいい感じで表示できるようにしておけよ」と言われて、一生懸命設定したときの内容をシェアする。
環境
環境設定
sbt がインストールされている必要がある。
Mac OS X ユーザで homebrew ユーザなら
$ brew install sbt
でインストールされる。Scala のインストールは不要。
バージョンが少し古くても問題ない。
まずはローカルで試す
(1) Scala (lift) プロジェクトを用意する
ここでは説明のため、
Google Code Archive - Long-term storage for Google Code Project Hosting. にある
lift_sbt_prototype を利用する。
$ git clone git://github.com/lift/lift_sbt_prototype $ cd lift_sbt_prototype $ sbt update
(2) sbt のバージョンを 0.7.5 にする
$ sbt > set sbt.version 0.7.5 > reload
project/build.properties が書き換わるのでコミットしておく。
(3) sbt-coverage の設定
$ sbt > *undercoverRepo at http://undercover.googlecode.com/svn/maven/repository/ > *coverage is com.proinnovate sbt-coverage 0.2
sbt-coverage のページでは 0.1 を設定するように書かれているが
0.2 でないと動作しないので注意。
(4) junit_xml_listener の設定
Scala のテスト結果を surefire 形式で出力するプラグインの設定を行う
project/plugins/LiftProjectPlugins.scala (新規作成)
import sbt._ class ShimbashiShelfProjectPlugins(info: ProjectInfo) extends PluginDefinition(info) { val repo = "Christoph's Maven Repo" at "http://maven.henkelmann.eu/" val junitXml = "eu.henkelmann" % "junit_xml_listener" % "0.2" }
project/build/LiftProject.scala (更新)
diff --git a/project/build/LiftProject.scala b/project/build/LiftProject.scala index 859461f..ce65279 100644 --- a/project/build/LiftProject.scala +++ b/project/build/LiftProject.scala @@ -1,8 +1,12 @@ import sbt._ +import eu.henkelmann.sbt.JUnitXmlTestsListener class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) { val liftVersion = "2.0" + def junitXmlListener: TestReportListener = new JUnitXmlTestsListener(outputPath.toString) + override def testListeners: Seq[TestReportListener] = super.testListeners ++ Seq(junitXmlListe + override def libraryDependencies = Set( "net.liftweb" % "lift-webkit" % liftVersion % "compile->default", "net.liftweb" % "lift-mapper" % liftVersion % "compile->default",
コードを書き換えたらアップデートしておく。コミットも忘れずに。
$ sbt update
Jenkins 上での設定
ローカルで行った sbt-coverage 0.2 の設定をビルドサーバ上でも行うこと。
まとめ
継続的インテグレーションの中でテスト結果やカバレッジレポートをグラフで表示することはテストを書こうというモチベーションになる。
自分のコミットがカバレッジのグラフを右肩下がりにしてしまったときの罪悪感はなかなかのものである。
設定もそれほど難しくないので、とりあえず表示してみるのがオススメ。