[Rails4,Jenkins] ci_reporter でテスト結果を整形


この記事の所要時間: 222
社内でもじわじわと Rails 4 の利用が広がっています。
弊社ではCIサーバに Jenkins を使用していますが、Rails プロジェクトのテスト結果を Jenkins で整形して表示するには、Ruby のテストフレームワークの出力を JUnit 形式の XML に変換してくれる ci_reporter が便利です。
しかし Rails 4 の場合、現状ドキュメントに書いてあるとおりに設定してもうまくいかないようです。そこで、試行錯誤してうまくいった方法をここで紹介します。なお、この記事で使用したバージョンは下記のとおりです。テストフレームワークは Rails 標準の ActiveSupport::TestCase を使います。

Ruby 2.0.0-p0
Ruby on Rails 4.0.0.rc1
ci_reporter 1.8.4
Jenkins 1.504

Gemfile

まず、Gemfileci_reporter を追加します。

gem 'ci_reporter', :group => :test

Rake の設定

次に、lib/tasks ディレクトリに以下のスクリプトを設置します。
lib/tasks/ci_reporter.rake

require 'ci/reporter/rake/minitest_loader'

ci_reporter のドキュメントでは ci/reporter/rake/minitestrequire して rake ci:setup:minitest するようにと書かれているのですが、うまく動かないようなので ci:setup:minitest タスクが行う ci/reporter/rake/minitest_loader の読み込みをユーザ定義の Rake タスクのファイルの中で行うように設定しています。
あとはいつも通り rake test すると、 test/reports ディレクトリに JUnit 形式の XML ファイルが出力されます。

$ rake test

Jenkins の設定

Jenkins側では、Jenkins Rake Plugin を使ってビルド時に rake test を実行させるように設定します。
スクリーンショット_052413_060834_PM
そして「ビルド後の処理」に「JUnitテスト結果の集計」を追加し、テスト結果の XML のパスを設定します。ここは JUnit を使う場合と同じですね。
スクリーンショット_052413_052636_PM

投稿者紹介

齊藤 潤
サーバ運用もできるプログラマと化した、2013年入社の元新人エンジニアです。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP