doggo

https://github.com/queq1890

Heroku Review Apps + Railsの環境構築

今日初めてHeroku Review Appsを弄ったので設定のメモ。

Heroku Review Appsとは

f:id:queq1890:20180711194820p:plain

Review Apps | Heroku Dev Center

Herokuが提供している、プルリクエスト毎にステージング環境を作成してくれる機能です。 勝手にデプロイまでやってくれるので、実装者はアプリ側のコードを書くことに集中できます。 また、コードのレビュアーは気になる箇所の挙動について実際に動作を確かめることができるので、レビューがしやすくなります。

本当はこんな感じ 「ECS を使って PR ごとに検証環境を用意した話」というテーマで登壇しました! - SmartHR Tech Blog でやるのがいいんだろうなぁと思いつつ、 Herokuで十分な時はReview Apps良さそうという所感です。

Review Appsの導入

*Herokuへのデプロイ、Githubへの連携は既にできている前提で書きます。

1.リポジトリの設定

ブラウザ上でHerokuにログインし、Review Appsを導入したいアプリケーションを開きます。 アプリケーションを開いたら、deployタブをクリックしてください。

f:id:queq1890:20180711185858p:plain

その後、Deployment methodGithub に変更します。 f:id:queq1890:20180711190346p:plain

Connect to Githubの列で、検索フォームからReview Appsを使いたいリポジトリの名前を検索し、Connectボタンをクリックしてください。 f:id:queq1890:20180711190354p:plain

次のような表示になったら、リポジトリの設定に成功しています。 f:id:queq1890:20180711190846p:plain

2.パイプラインの設定

リポジトリの連携が終わったら、続いてパイプラインの設定に移ります。 Add this app to a pipelineにある、Choose a pipelineをクリックし、Create a new pipelineを選択して下さい。

f:id:queq1890:20180711191209p:plain

すると、パイプラインの名前と、パイプラインをどのステージに追加するかを入力するフォームが表示されるので、好きなように入力して下さい。

f:id:queq1890:20180711191353p:plain

パイプラインの作成に成功すると、パイプラインの管理画面にリダイレクトされます。 一番左にあるブロック内の、"Enable Review Apps" をクリックして Review Appsの設定を行います。 f:id:queq1890:20180711191742p:plain

Review Appsを利用するためには、リポジトリ内にapp.jsonという設定ファイルを作成する必要があります。 もしもリポジトリにこのファイルがない場合、app.jsonを作るよう促すモーダルが表示されるので、 "Create an app.json File" ボタンをクリックします。 f:id:queq1890:20180711192017p:plain

すると、作成するapp.jsonの内容をGUIで決められるページに遷移します。Railsアプリの場合、ScriptsPost deploy script (optional)に、"rails db:schema:load db:seed"など、デプロイ完了後に初期化するためのコマンドを入力しておきます。

また、環境変数を、親となるHerokuアプリケーションからコピーしたい場合、Environmentの項目を追記する必要があります。 やり方は、環境変数の名前を入力して、Copy at Build Timeを選ぶだけです。(選ぶだけなのに認証で使っている環境変数を渡していないことに気づかず小一時間ハマった)

f:id:queq1890:20180711192722p:plain

設定が完了したら、ページ末尾の "Commit to Repo"ボタンを押すと、Github上のリポジトリの、masterブランチにapp.jsonが作成されます。 後からこのjsonファイルを編集して設定を変更することもできるので、気になる方はHerokuのドキュメントをご確認ください。

Review Apps | Heroku Dev Center

3.プルリクエストを作成する

ここまで来たら後はプルリクエストを作成するだけです。masterブランチから適当なブランチを切り、変更をプッシュしてプルリクエストを作成すると、 プルリクエスト毎に環境を作成してデプロイを行ってくれるようになります。

f:id:queq1890:20180711193201p:plain

特に変更がなくてもデプロイしたい場合は、Create Review Appボタンを押すことで手動で実行できます。 また、デプロイまで完了するとプルリクエスト上に完成した環境へのリンクが投稿されます。

f:id:queq1890:20180711193529p:plain

その他 デバッグ

「通常のHerokuへのdeployは上手くいくのに、Review Appsが建てる方は上手くいかない」時は、heroku log -t --app ReviewAppの建てた環境の名前をターミナルから実行すると、どんなリクエストが行われているか、どんなエラーを吐いているかを確認できるのでオススメです。

感想

結構楽にステージング環境を作れるReview Appですが、もしも実運用されてるアプリに導入したい場合、アクセスできるIPとかを絞るのが面倒臭いな〜〜とか思いました(Heroku全体そうだけど)。

個人開発とかではガンガン使っていきたい。

技術ブログ始めた

始めまして。yujima(https://twitter.com/yrljm)と申します。 2017年の8月からプログラミングを始め、現在は都内のベンチャーRuby, Rails, JS各種(ES6, Node, React, Vue)などを触っています。

毎日いろんなことを勉強しているはずなのに、気が付いたら忘れてしまうようなことも多々あり、 技術ブログを作成してまとめておくことにしました。

あまり畏まった内容ではなく、ちょっとしたメモとして量を書けたらと考えています。 よろしくお願いいたします💪🐱