- 更新日: 2014年7月3日
- Jenkins & CI
BitbucketにpushしたらJenkinsにRSpecの自動テストを実行させる
Jenkins と Bitbucket のプライベートリポジトリを連携させることができたので、続いて Bitbucket のプライベートリポジトリに git push したら自動で RSpec テストが走るところまで設定したい。
ユーザー認証ありのJenkinsとBitbucketプライベートリポジトリを連携 | EasyRamble
— 環境 —
CentOS 6.4
Jenkins 1.570
以下、手順です。
Git plugin をインストール
Jenkins にログイン後、Git Plugin をインストール。
Git Plugin にチェックをして、「再起動せずにインストール」をクリック。
RSpec 自動テスト用の Jenkins ジョブを作成
新規ジョブ作成 → 「ジョブ名」に「RSpecTest」と入力、「フリースタイル・プロジェクトのビルド」にチェック → OK
・「Repository URL」に Bitbucket リポジトリの URL(git@bitbucket.org:user_name/repo_name.git)を入力
・「リポジトリ・ブラウザ」で bitbucketweb を選択 → 「URL」に Bitbucket リポジトリのURL(https://user_name@bitbucket.org/user_name/repo_name.git)を入力
・「ビルド・トリガ」で「SCMをポーリング」にチェック
・ビルド・トリガ → SCMをポーリング → スケジュール → 以下を入力
H/5 * * * *
5分毎にリポジトリの更新をチェックする設定です。
続いて、DBのマイグレーションなどを実行するシェルスクリプトの設定。
1 2 3 4 5 6 7 8 9 |
#!/bin/bash source /var/lib/jenkins/.bashrc cd /var/lib/jenkins/workspace/RSpecTest/ bundle install --path vendor/bundle bundle exec rake db:migrate RAILS_ENV=test bundle exec rake db:test:prepare bundle exec rspec spec/ |
注意点としては、シェバング(#!/bin/bash)を指定しないと bundle コマンドが見つからない、というエラーが出ました。
.bashrc の中身は以下。PATH の設定、rbenv の起動などを行う。
/var/lib/jenkins/.bashrc
1 2 3 4 5 6 |
# rbenv setting for jenkins export RBENV_ROOT="/usr/local/rbenv" export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)" |
database.yml を .gitignore に書いてある場合は、それらのファイルはリポジトリから引っ張ってこれない。なので任意の場所にファイルを置いておき、別途 cp や ln -s で jenkins ジョブの workspace 以下のディレクトリに追加するコマンドを bundle コマンドの前に追記する。
なお、今回の Jenkins 設定では rbenv はシステムワイドにインストール済みの前提となっています。詳しくは以下を参照。
rbenv と ruby-build で Ruby をインストールして管理 〜 CentOS6 | EasyRamble
また、テスト用に使う DB は前もって作成し、MySQL ユーザーに権限を与えておきます。以下、staging 環境と同様の手順で test 環境を準備しておく。
Rails4.1 で staging 環境を用意する | EasyRamble
Jenkins による自動テスト実行後に処理を追加する場合は、以下の設定を追加します。
E-mail 通知を選択した場合は、宛先(通知先メールアドレス)を入力します。
以上を設定したら保存。
手動でビルド実行して、成功するかどうか確認。その後、Bitbucket リポジトリに push して変更を加えて、5分以内に Jenkins により RSpec テストが自動で実行されることを確認します。
Bitbucketのウェブフックを使う設定
SCMポーリングのスケジュール設定の代わりに、Bitbucketでウェブフックを設定する方法でも良いです。むしろそっちのほうが良いかも。Bitbucket にログイン後、
以下のURLを入力します。
1 2 3 |
http://JenkinsサーバーのURL(IPアドレス):8080/git/notifyCommit?url=git@bitbucket.org:user_name/repo_name.git |
これで、Bitbucket に変更が push された時点で、自動で Jenkins のジョブが実行されます。
以上で Jenkins による RSpec 自動テストの設定は終わりです。Jenkins は使いやすい上に超便利、cronジョブの強力版という印象です。さらに、GUIで操作できるので楽です。特にはまる箇所もなくスムーズに設定できました。
- – 参考リンク –
- Jenkinsで小さなテストを実行してみよう(Mac OS X&Linux)[Ruby、Rails] – Build Insider
- さくらのVPS+Jenkins+github+rails3 – リア充爆発日記
- Rubyアソシエーション: Jenkins
- Rails – Jenkinsでrvmを使おうとするとエラー – Qiita
- Jenkins & CI の関連記事
- CircleCIにmecabをインストール(Rails)
- ユーザー認証ありのJenkinsとBitbucketプライベートリポジトリを連携
- JenkinsをCentOS6にインストールしてユーザー認証設定
Leave Your Message!