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

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

git cloneをするために、クローン用のURLをコピーします。
このURLはアカウントごとに異なりますので、注意してください。
下記のサンプルコードのコピペでは私のリポジトリを参照しようとするため、リポジトリがないって怒られると思います。。。
| shell | |
|---|---|
| 1 | git clone git@github.com:takumiio/rspec-with-circleci.git |
それでは、クローンしてきたディレクトリに移動して、
rails new .しちゃいましょう。| shell | |
|---|---|
| 1 | cd rspec-with-circleci |
| 2 | rails new . |
RSpecを導入
CircleCIでテストをまわすために、RSpecを導入します。
Gemfileのdevelopentとtestグループの箇所にrspec-railsとrails-controller-testingを追加します。
| Gemfile | |
|---|---|
| 1 | group :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' |
| 6 | end |
追加が完了したら、bundle installを実行して、RSpecのインストールをします。
その後、RSpecのサンプルを作るために、「本の管理」を想定したscaffoldを実行し、test用のDBを構築します。
| shell | |
|---|---|
| 1 | bundle install |
| 2 | rails generate rspec:install |
| 3 | rails g scaffold book name:string content:text |
| 4 | rake db:migrate RAILS_ENV=test |
| 5 | rspec |

rspecコマンドでテストを実行すると上記画面のようになります。
緑で.と表示されている箇所はテスト成功、黄色で*と表示されている箇所はpendingといって、テスト作ってくださいねっという意味で出力されています。
赤色でなにか出力されているわけではないので、pendingはありますが、テストは成功している状態です。
それでは、作ったRailsをgithubへプッシュしましょう。
| shell | |
|---|---|
| 1 | git status |
| 2 | git add . |
| 3 | git commit -m 'Initial Rails with RSpec sample' |
| 4 | git push |

無事、pushが成功したら、上記のような画像になります。
CircleCIとgithubを連携
githubとCircleCIで連携するために、githubの設定をします。
リポジトリの Settings から Integrations & services を押してください。
その後、 Add service から CircleCIを選択します。

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

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

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

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

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

ビルドが開始されます。

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

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

ターミナルで実行したときと同じように詳細を確認できます。
これで、GitHubとCircleCIを使って継続的インテグレーション開発ができるようになりました!
まとめ
設定することが多いですが、ほとんどがGUIから操作できるので簡単だったのではないでしょうか??
これで、継続的インテグレーションができるようになりましたので、例えばすべてのテストがパスしない限り、
masterへマージさせないってことができたり、pushして問題がなければ自動デプロイができるようにすることができます。
それでは、今回のCircleCI導入のおさらいをしてみましょう。
- githubでリポジトリを作成する
- テストコードを含んだコードを作ったリポジトリへpushする
- githubの設定からCircleCIを有効にする
- CircleCIからGitHubの認証をしてプロジェクトを追加する
- ビルドが走るのでコーヒー飲みながら完了を待つ
まとめると、たったの5ステップで実行できます。
慣れるとサクサクっと導入できますので、継続的インテグレーション開発をどしどしやっていきましょう!