Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その6
目標
- Github上からRailsプロジェクト取ってくる。
- ビルド(bundle install/update とか、rake db:migrate)する。
- メトリクス計測する。(reek, roodi)
- RSpec実行
- テストレポート・カバレッジレポート生成
- ビルド結果を通知
テストレポート・カバレッジレポート生成
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 を指定する。
テストレポートの準備
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