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

Pocket

社内でもじわじわと 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年入社の元新人エンジニアです。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください