cre8cre8
AskMe♥

CircleCIとRSpec使って継続的インテグレーションしてみる

アジャイルやTDD(テスト駆動開発)や継続的インテグレーションという言葉を職場で流行らそうと必死になっているたくみです。
中の人が努めているのは中小SIerなため、ウォーターフォールが主流なのですよ。。。
(私が入社するまで、日付zipでソース管理されていたなんて口が裂けてもいえないぜ…)

githubでリポジトリを作成

それでは、CircleCIを使うためにgithubで新たなリポジトリを作成します。

githubリポジトリを新規作成

リポジトリ名はrspec-with-circleciにしていますが、お好きな名前をつけることもできます。
サンプルと異なる名前をつけた場合は、以下の手順もつけた名前におきかえて実行してください。

githubリポジトリ作成後の画面とgit clone URL

git cloneをするために、クローン用のURLをコピーします。
このURLはアカウントごとに異なりますので、注意してください。
下記のサンプルコードのコピペでは私のリポジトリを参照しようとするため、リポジトリがないって怒られると思います。。。

shell
1git clone git@github.com:takumiio/rspec-with-circleci.git

それでは、クローンしてきたディレクトリに移動して、rails new .しちゃいましょう。
shell
1cd rspec-with-circleci
2rails new .

RSpecを導入

CircleCIでテストをまわすために、RSpecを導入します。
Gemfileのdevelopentとtestグループの箇所にrspec-railsrails-controller-testingを追加します。

Gemfile
1group :development, :test do
2  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
3  gem 'byebug', platform: :mri
4  gem 'rspec-rails'
5  gem 'rails-controller-testing'
6end

追加が完了したら、bundle installを実行して、RSpecのインストールをします。
その後、RSpecのサンプルを作るために、「本の管理」を想定したscaffoldを実行し、test用のDBを構築します。

shell
1bundle install
2rails generate rspec:install
3rails g scaffold book name:string content:text
4rake db:migrate RAILS_ENV=test
5rspec

RSpec実行時の画面
rspecコマンドでテストを実行すると上記画面のようになります。
緑で.と表示されている箇所はテスト成功、黄色で*と表示されている箇所はpendingといって、テスト作ってくださいねっという意味で出力されています。
赤色でなにか出力されているわけではないので、pendingはありますが、テストは成功している状態です。

それでは、作ったRailsをgithubへプッシュしましょう。

shell
1git status
2git add .
3git commit -m 'Initial Rails with RSpec sample'
4git push

push後のリポジトリ画面
無事、pushが成功したら、上記のような画像になります。

CircleCIとgithubを連携

githubとCircleCIで連携するために、githubの設定をします。
リポジトリの Settings から Integrations & services を押してください。
その後、 Add service から CircleCIを選択します。

githubのsettingsからCircleCIの設定

選択した後にパスワードを求められる場合があります。求められた場合はgithubのパスワードを入力してください。
完了後に CircleCIのリンクを押すと下記のような画面になります。

CircleCIへ飛ぶためのリンク

上記のリンクから CircleCI にとんでもいいですし、こちらの https://circleci.com から直接飛んでも大丈夫です。
CircleCIのトップページへ移動してください。

CircleCIトップ画面

CircleCIトップページへ移動しましたら、 Sign Up For Free ボタンを押します。

OAuth認証

githubアカウントを使用して認証します。
Authorize GitHub のボタンを押してください。

CircleCIでビルドするためにプロジェクトを選択

CircleCIのダッシュボードへ遷移します。
左のメニューから ADD PROJECTS を選択後、右側の画面の rspec-with-circleci 欄にある、
Build project ボタンを押します。

CircleCIで初めてのビルド

ビルドが開始されます。

CircleCIで初めてのビルドした際に少し時間たったときの画面

1分ほどたつと、何やら黒い枠が表示されてゴニョゴニョとでてきます。
もうしばらくコーヒーでも飲んでまったり待っていましょう。

CircleCIでの初めてのビルド完了

おおよそ、3分30秒ほどで、ビルドが完了しました。
RSpecの箇所を押してみましょう。

CircleCIで実行されたビルドでのRSpecの詳細

ターミナルで実行したときと同じように詳細を確認できます。
これで、GitHubとCircleCIを使って継続的インテグレーション開発ができるようになりました!

まとめ

設定することが多いですが、ほとんどがGUIから操作できるので簡単だったのではないでしょうか??
これで、継続的インテグレーションができるようになりましたので、例えばすべてのテストがパスしない限り、
masterへマージさせないってことができたり、pushして問題がなければ自動デプロイができるようにすることができます。

それでは、今回のCircleCI導入のおさらいをしてみましょう。
- githubでリポジトリを作成する
- テストコードを含んだコードを作ったリポジトリへpushする
- githubの設定からCircleCIを有効にする
- CircleCIからGitHubの認証をしてプロジェクトを追加する
- ビルドが走るのでコーヒー飲みながら完了を待つ

まとめると、たったの5ステップで実行できます。
慣れるとサクサクっと導入できますので、継続的インテグレーション開発をどしどしやっていきましょう!

≪ 前の記事
getElementsByClassNameで指定したクラスを全部消す
次の記事 ≫
Railsでファイルをアップロードしてpublicディレクトリに保存したあとに表示する

いいねやコメントを送っていただけると中の人がしっぽ振って大喜びします♪

あなたへのおすすめの記事