Heroku CIを稼働中のサービスに早速導入しました

我が家の小さな庭の芝も若葉色に色づく季節になってまいりました。

こんにちは。
株式会社みんなのウェディング、エンジニアの中村です。

現在は主に花嫁限定SNSアプリ「Brides UP!(ブライズアップ)」のWebアプリケーション開発を担当しております。

Brides UP!は結婚式のアイデアさがしや花嫁同士で情報交換するコミニケーションツールです。
結婚式は誰もが初めてでわからないことが多く、それらを招待する友人などに相談することも難しい現状があります。
立場が同じ花嫁さんたちが、それぞれの経験を共有することで不安を解消し理想の結婚式への準備を楽しく進めることができます。
花嫁さんが最高の1日を迎えられるよう「花嫁さん同士がつながる」ことを大切にし、日々開発を行っております。

今回はHeroku CIを現在稼働中のサービスBrides UP!に導入したのでその経緯と手順についてご紹介します。

CIツールの検討

みんなのウェディングでは継続的インテグレーションを実現するためにCircleCIを利用しています。
参考記事:みんなのウェディングの継続的デリバリー

Brides UP!のWebアプリケーションはHeroku上で稼働しているので相性が良さそうということもあり今回の題材であるHeroku CIの導入を検討しました。
しかし、2017年4月時点でベータ版でありcapybara-webkit のサポートがされていなかったこともありでHeroku CIの導入を見送りました。代わりにwerkerを導入し自動テストの運用を開始。

その後、2017年5月17日のアナウンス「Heroku CI: Browser and User Acceptance Testing (UAT)」でHeroku CIがブラウザ/ユーザー受け入れテストをサポートし、正式リリースされたことを受けあらためてHeroku CIを導入してみることにしました。

Heroku CIを導入する

Ruby on RailsアプリでのHeroku CIの導入方法について手順を紹介します。

Heroku Pipelinesの作成

Heroku CIを利用するためにはまずHeroku Pipelinesを設定する必要があります。
Heroku PipelinesはReview・Development・Staging・Productionそれぞれの環境を一つのサービスとして紐づけ管理・デプロイができる機能です。

Heroku Pipelinesを作成するには、アプリケーション一覧画面の右側のメニュー Create new pipeline のリンクから行います。

Pipeline information欄に適切な名前をつけ、接続するGitHubのレポジトリを選択します。

STAGINGとPRODUCTIONそれぞれにherokuアプリを指定します。

これでHeroku Pipelineが作成されました。

Pipelineの設定・Heroku CIの有効化

Settingsタブから設定を行います。

Enable Heroku CI をクリックして自動テストを有効にしましょう。
これでGitHubリポジトリへのプッシュごとにテストが自動で実行されます。

Heroku CIの設定

app.jsonによる設定

必要に応じてアプリケーションのルートに設置するapp.jsonで設定を行います。
Heroku CIでは以下の項目について設定します。

  • env
    • 環境変数
  • add-ons
    • デプロイする前に、アプリケーション必要なHerokuアドオン
  • buildpacks
    • アプリのビルドに必要なビルドパック
  • formation
    • プロセスタイプ設定用のキー値オブジェクト
  • scripts
    • 様々なタイミングで実行できるスクリプトやシェルコマンド

Brides UP!の場合はpostgresqlを利用しているので以下のアドオンの設定が必要でした。

{
  "environments": {
    "test": {
      "addons":[
        "heroku-postgresql"
      ]
    }
  }
}

環境変数

環境変数はapp.jsonで指定することもできますが、Herokuアプリケーション同様にコンソールから設定できます。

テストの実行

レポジトリにpushして、プルリクエストを作成しましょう。

Testsタブをクリックしてテストページを表示します。
左カラムに新しいテストのタスクが追加され、Heroku CIでテストが実行されていることが確認できます!

GitHubのプルリクエストを確認すると実行されているのがわかります。
テストが完了すると右側のような表示になります。

まとめ

Herokuで稼働しているサービス上でHeroku CIを利用することで簡単に自動テスト環境を構築することができました。
Heroku CIは初心者でも導入が簡単で操作もわかりやすいのでHerokuでサービスを運用されている方は試してみてはいかがでしょうか。


みんなのウェディングでは一緒にサービスを成長させていきたいエンジニアやデザイナーを募集しております。
また外部の方をお招きして勉強会やボードゲーム会を行い定期的にわいわいしたりしています。
ぜひお気軽にご応募・ご参加ください!

過去におこなった勉強会や交流会