Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その6

目標

  1. Github上からRailsプロジェクト取ってくる。
  2. ビルド(bundle install/update とか、rake db:migrate)する。
  3. メトリクス計測する。(reek, roodi)
  4. RSpec実行
  5. テストレポート・カバレッジレポート生成
  6. ビルド結果を通知
テストレポート・カバレッジレポート生成

Gemfileにレポート出力関連のGemを記述します。

group :test do
  gem 'rspec-rails', '2.12.0'
  gem 'simplecov', :require => false
  gem 'simplecov-rcov', :require => false
  gem 'ci_reporter'
end

bundle install します。

カバレッジレポートの準備

  • simplecovの設定

spec/spec_helper.rb の先頭に

require 'simplecov'
SimpleCov.start 'rails'

を追記
この時点で rake spec すると coverage 配下にレポート出力される

ただ、JenkinsのRcovプラグインと連携させるためにsimplecovの結果をRcov形式に変換しないといけない。

spec/spec_helper.rb の先頭の記述を

require 'simplecov'
require 'simplecov-rcov'
SimpleCov.start 'rails'
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter

に変更
これで、rake spec すると coverage/rcov 配下にレポート出力されてる。

JenkinsのRCovプラグインの設定で、どのディレクトリ配下のレポートを読み込むか?ってのがあるので coverage/rcov を指定する。


参考 kennyjのブログ(仮): ruby1.9時代にrcovは使ってはいけない。simplecovを使おう!

テストレポートの準備

ci_reporterの設定。ci_reporter は、RSpecの結果をJUnitのレポート形式に変換するGemだそうです。JUnit形式ならJenkinsがデフォルトで取り込めるよーってことか。

Rakefile を編集して、

require 'ci/reporter/rake/rspec'

を追記。

これで、
rake ci:setup:rspec spec
すると、spec/reportsへRSpecのレポートが出力されてる。

Jeninsの JUnitテスト結果の集計の設定で、読み込みファイル対象に spec/reports/*.xml を指定する。

参考 Jenkins で Rails 3 プロジェクトのテスト結果とカバレッジをグラフ表示する - mallowlabsの備忘録

ジョブのビルドスクリプト

export http_proxy='http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}/'
bundle install --path vendor/bundler
rake db:migrate
rake quality
rake ci:setup:rspec spec