開発環境を捨て去りたい(その1)*1

飽きてきたらまずは、CI環境からいじくりまわすことにしてみた。
とりあえず、個人的備忘録としてハマった事をメモしときます。

やりたかった事:

  • gitHubにpushしたらjenkinsにbuildを開始する
  • buildはsbtで実行
  • sbtでは、Java/Scala共にテストコードを走らせて、レポーティングできること(Scala未確認)
  • sbtでは、java/Scala共にテストカバレッジが何らかの手段でとれる事(Scala未確認)
  • ツール等は極力最新のものを使う


以下ハマった点。

  • sbtのtestタスクでは、JUnitのテストも走らせたい
    • junit-interfaceと言うpluginを入れればよい。これは本家を参考にしてやればOK
  • さくらクラウド上のJenkinsで実行すると、UnknownHostExceptionが発生する
    • /etc/hostsに自分のホスト名の情報を追記する
  • テスト実行時のカバレッジがとりたい
    • sbtのプラグインリストに2つほど記載されていたけど、jacoco4sbtの方がすんなり動いたのでこっちを利用する
    • その結果、testタスクは封印し、jacoco:coverタスクを叩くことになった
  • JenkinsがGitHubへアクセスするときに秘密鍵パスフレーズを聞いてくる
    • opensslコマンドでパスフレーズを取り除いた(久々過ぎて忘れてたorz)
  • テストの結果をファイルに残したい(結構初めのころに着手)
    • junit_xml_listenerと言うpluginを入れればよい。これは本家のやり方では駄目だった。多分、sbtのバージョンが0.11.2だからだと思う
    • ネットを調べて以下のような事やればできるっぽい
git clone git://github.com/hydrasi/junit_xml_listener.git
cd junit_xml_listener.git
sbt publish-local
mv .ivy2/local/eu.henkelmann/junit_xml_listener/scala_2.9.1/sbt_0.11.2/0.3/ivy2/ .ivy2/local/eu.henkelmann/junit_xml_listener/scala_2.9.1/sbt_0.11.2/0

最後の行はWindowsだけかな?さくらクラウド上(CentOS 5.7)ではなくてOKだった。

とりあえず、悪戦苦闘したのはこの辺りかな?後は、Jenkinsの設定と、sbtのビルド定義見れば多分分かるはず。