BitbucketにpushしたらJenkinsにRSpecの自動テストを実行させる

スポンサーリンク

Jenkins と Bitbucket のプライベートリポジトリを連携させることができたので、続いて Bitbucket のプライベートリポジトリに git push したら自動で RSpec テストが走るところまで設定したい。

ユーザー認証ありのJenkinsとBitbucketプライベートリポジトリを連携 | EasyRamble

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
CentOS 6.4
Jenkins 1.570

以下、手順です。

Git plugin をインストール

Jenkins にログイン後、Git Plugin をインストール。

・Jenkinsの管理 → プラグインの管理 → 利用可能 → 「フィルター」に「Git Plugin」と入力

Git Plugin にチェックをして、「再起動せずにインストール」をクリック。

RSpec 自動テスト用の Jenkins ジョブを作成

新規ジョブ作成 → 「ジョブ名」に「RSpecTest」と入力、「フリースタイル・プロジェクトのビルド」にチェック → OK

・「ソースコード管理システム」で Git を選択
・「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のマイグレーションなどを実行するシェルスクリプトの設定。

・ビルド → ビルド手順の追加 → シェルの実行 → 「シェルスクリプト」に以下のシェルスクリプトを入力

注意点としては、シェバング(#!/bin/bash)を指定しないと bundle コマンドが見つからない、というエラーが出ました。

.bashrc の中身は以下。PATH の設定、rbenv の起動などを行う。

/var/lib/jenkins/.bashrc

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 通知」など

E-mail 通知を選択した場合は、宛先(通知先メールアドレス)を入力します。

以上を設定したら保存。

手動でビルド実行して、成功するかどうか確認。その後、Bitbucket リポジトリに push して変更を加えて、5分以内に Jenkins により RSpec テストが自動で実行されることを確認します。

Bitbucketのウェブフックを使う設定

SCMポーリングのスケジュール設定の代わりに、Bitbucketでウェブフックを設定する方法でも良いです。むしろそっちのほうが良いかも。Bitbucket にログイン後、

Settings → フック → 「POST」を選択 → ホックを追加 → Jenkins サーバーへの通知用 URL を入力

以下のURLを入力します。

これで、Bitbucket に変更が push された時点で、自動で Jenkins のジョブが実行されます。

以上で Jenkins による RSpec 自動テストの設定は終わりです。Jenkins は使いやすい上に超便利、cronジョブの強力版という印象です。さらに、GUIで操作できるので楽です。特にはまる箇所もなくスムーズに設定できました。

スポンサーリンク
Jenkins で CI 環境を構築するには、Jenkins実践入門が参考になります。
 
スポンサーリンク

Leave Your Message!