環境
- Jenkins構築済み
- Jenkinsのジョブ自体は作成済み
- jenkinsユーザがJenkinsを動かしている
- jenkinsユーザのホームディレクトリ
/var/lib/jenkins
- jenkinsユーザのログインシェルは
/sbin/nologin
でログイン不可
rbenvでRubyをインストール
rubyグループに所属するユーザ(とroot)がrbenvを使えるようにする
# groupadd ruby
# gpasswd -a jenkins ruby
rbenvをインストール
# cd /usr/local
# git clone git://github.com/sstephenson/rbenv.git rbenv
rubyグループ向けに権限設定
ruby-buildをインストール
# mkdir /usr/local/rbenv/plugins
# cd /usr/local/rbenv/plugins
# git clone git://github.com/sstephenson/ruby-build.git
# chgrp -R ruby ruby-build
# chmod -R g+rwxs ruby-build
環境変数設定
rbenvコマンドを利用可能にするため、ユーザごとに環境変数設定が必要。
ただしjenkinsユーザはログイン不可のため、別の方法を使う(後述)。
ここではrootユーザにのみ設定を追加
~/.bash_profile
に以下の行を追加
export RBENV_ROOT=/usr/local/rbenvexport
PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"```
### rbenvを使ってrubyをインストール
記述時点でのRuby1.9系と2.0系の最新バージョンをインストールし、1.9系をデフォルトで使用することにする。
```shell-session
# rbenv install 1.9.3-p429
# rbenv install 2.0.0-p195
# rbenv rehash
# rbenv global 1.9.3-p429
Jenkinsの設定
プラグインの追加
Jenkins管理画面を開き、
Jenkinsの管理 > プラグインの管理 > 利用可能 から以下をインストール
- ruby plugin
- rake plugin
- rbenv plugin
ジョブの設定
ジョブの設定画面で、
- ビルド環境 > rbenv build wrapper をチェック
- The Ruby version に
1.9.3-p429
を指定 - Preinstall gem listに
bundler,rake
を指定
- The Ruby version に
- ビルド手順の追加 > シェルの実行 を選び、以下の行を追加
export PATH="/var/lib/jenkins/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
rbenv exec bundle install --path vendor/bundle
bundle exec rspec
ビルドを実行して成功すればOK!
Rspecでカバレッジを出したい場合
Gemを追加
プロジェクトのGemfileに以下のgemを追加し、bundle install
group :test do
gem 'simplecov'
gem 'simplecov-rcov'
end
カバレッジファイルを出力させる
spec_helper.rb
等の、テストの冒頭に必ず呼ばれるファイルに以下を追加。
vendor/
以下のgemに付属するテストのカバレッジは出さないように除外。
require 'simplecov'
require 'simplecov-rcov'
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
SimpleCov.start do
add_filter '/vendor/'
end
これで bundle exec rspec
すると coverage/
以下にカバレッジファイルが作成される。
coverage/rcov/index.html
をブラウザで開けばカバレッジの状況をブラウザから確認できる。
Jenkins側の設定
Jenkinsの管理 > プラグインの管理 > 利用可能 から以下をインストール
- ruby metrics plugin
ジョブの設定 > ビルド後の処理 > Publish Rcov report を選び、
- Rcov report directory に
coverage/rcov
を指定 - Coverage metric targets で天気マークが出る条件を指定(お好みでどうぞ)
ビルドを実行し、ジョブのメニューから Rcov report が見れるようになっていればOK!