LoginSignup
62
65

More than 5 years have passed since last update.

Amazon Linux上のJenkinsでrbenv + Bundler + Rspecを動かす

Last updated at Posted at 2013-06-13

環境

  • 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グループ向けに権限設定

shell# chgrp -R ruby rbenv# chmod -R g+rwxXs rbenv

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 を指定
  • ビルド手順の追加 > シェルの実行 を選び、以下の行を追加
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!

62
65
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
65