読者です 読者をやめる 読者になる 読者になる

えいのうにっき

あたまのなかのデトックスを、不定期的に。主に Web 系技術ネタ。

awesome_events の CI はじめました

Rails CircleCI

"パーフェクト Ruby on Rails" のサンプルアプリケーションである "awesome_events" (写経済み)を使って色々遊んでみちゃうシリーズ。 今回は CI。

CI サービスには、会社で使っているというのと、最近 1コンテナ目が無料になったってことで、CircleCI を選択。

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

Add Project

サインアップ・ログインしたらダッシュボードが表示される。 左サイドバーに +Add Project というメニューがあるのでこれを押す。

そのあと右画面で GitHub アカウントを選択して、CI したいリポジトリを選ぶ。今回は awesome_events なので、その行の Build Project を押す。

f:id:a-know:20141221163627p:plain

ビルド開始

そしたらあれよあれよとビルドが走り...

f:id:a-know:20141221162931p:plain

はい、テスト(rspec)失敗(´・ω・`)

f:id:a-know:20141221163000p:plain

調査

原因、なんとなく思い当たるところもないことはないんだけど、少し調査してみる。 CircleCI の特徴の一つに、ビルドに用いられるコンテナに ssh で入ることができる、というのがある。

画面右上の & enable ssh というのを押すと、再度コンテナが立ち上がり、rspec が走り、失敗(´・ω・`)し、最後に ssh 接続するためのコマンドを表示してくれる。

f:id:a-know:20141221163020p:plain

気をつけなきゃいけないのは、この状態だとずっとコンテナは立ち上がりっぱなしだということ。1コンテナのプランの場合、このコンテナが落ちるまで他の CI が待ち続けてしまう。ssh する用事が終わったら、右上の cancel ボタンを押してコンテナを落とすのを忘れないように。

今回は ssh で接続して直接 bundle exec rspec をしてもテストが失敗することを確認。 経過は割愛するけど、テスト失敗の理由は、config/secrets.yml の中身が環境変数からセットするようにしていたにも関わらず、CircleCI のコンテナにはそのセットがされていないから、...だった。

環境変数の設定

画面右上の歯車マークからそのプロジェクト固有の設定画面を表示できる。 表示されたいくつかのメニューの中から Tweaks > Environment variables を選択、必要な環境変数を設定する。

f:id:a-know:20141221163100p:plain

んで Rebuild してみるとー。

f:id:a-know:20141221163116p:plain

やったね、成功 :)

ブランチに対するテストも...

f:id:a-know:20141221163135p:plain

自動的に CI が始まり...

f:id:a-know:20141221163158p:plain

f:id:a-know:20141221163223p:plain

ほいきた成功 :)

awesome_events の CI だけなら、 circle.yml を書かずともできるんだね。べんり! (...って、Ruby のバージョンとかは yml で指定するものだったような......、、はて?)

おまけ・slack への通知

CI の結果の通知を slack へ通知できるようにしてみる。

Slack の設定画面から IntegrationCircle CI を Add する。

f:id:a-know:20141221163234p:plain

そしたらこんな画面になるので、あとは、既存の channel に通知させるなり、新たにそれ用の channel を作るなり、お好きにどうぞ状態。

f:id:a-know:20141221163244p:plain

通知先の channel を決めたら、あとは CircleCI 側で必要な設定をスクショを交えて説明してくれてる Setup Instructions ページが表示されるので、それに従って設定するだけ。

f:id:a-know:20141221163258p:plain

できーた(∩´∀`)∩ワーイ