Technofara

Golangエンジニア!仕事で必要になって勉強した事とか、新しい事とか色々まとめたりを緩くやります。技術系と思考系だけにしておきます、

Rails5 + RspecをCircleCIで動かしてみた

http://shinofara.hateblo.jp/entry/2016/03/16/234010
前回Rspec導入までしたので、これはCIもやるっしょって事で、
CircleCI と連携させました。

CircleCI ではテスト結果を収集させるには、
JUnit Report形式 にしないといけないので、

rspec_junit_formatter を入れました。
https://github.com/shinofara/sample-rail5/pull/2/commits/e1ebee0c9d9fed591395251eb848a81e3e766e71#diff-8b7db4d5cc4b8f6dc8feb7030baa2478R39
こんな感じ

あとは実行時に、レポート形式を指定して実行させる為に
公式のドキュメントを参考にして
https://github.com/shinofara/sample-rail5/pull/2/commits/53d173f96311c62b18114db98d9fcf93eee1d784#diff-29944324a3cbf9f4bd0162dfe3975d88R14
こんな感じ

準備が整いましたので、 CircleCI と連携させて実行させてみます。
連携方法は割愛しますが、circle.yml の例を貼っておきます。

$ cat circle.yml
machine:
  ruby:
    version: 2.2.3
  environment:
    RAILS_ENV: test

dependencies:
  pre:
    - gem uninstall bundler
    - gem install bundler

test:
  override:
    - bundle exec rspec -r rspec_junit_formatter --format RspecJunitFormatter -o $CIRCLE_TEST_REPORTS/rspec/junit.xml

テスト失敗時の表示確認
https://circleci.com/gh/shinofara/sample-rail5/9

おお、ちゃんとエラーがファーストビューにでておるではないか

あとは、正常に戻して終わり
https://circleci.com/gh/shinofara/sample-rail5/11

これで、RspecからのCircleCI連携が完了!!

と思ったけど、Githubには連携先のサービスから返却されるstatusに応じて、
PRをマージさせないとかできるので、その設定をしてみます。

1 まずは、Settings

f:id:shinofara:20160317014231p:plain:w600

2 守るBranchを選択

f:id:shinofara:20160317014243p:plain:w600

3 とりあえず全部チェック

f:id:shinofara:20160317014248p:plain:w600

4 設定後pushした直後

f:id:shinofara:20160317014254p:plain:w600

5 テストがコケた場合

f:id:shinofara:20160317014259p:plain:w600

6 テストが正常終了した場合  

f:id:shinofara:20160317014303p:plain:w600

これでみんなもCIに支配された生活の始まりデスね。

今回の差分