月曜日までに考えておきます

ITネタとゲームネタ中心に興味のあること色々書きます。

Pull RequestごとにデプロイされるHerokuのReview Appsを仕事で使ってみたら超絶便利だった

業務でGitHubを使っていて、developブランチにマージされたらステージング環境として使っているAWS上のサーバにデプロイされるようにしています。この時点で割と便利なんですが、マージ前にデザインや挙動を確認したいというケースも多いのでこの部分何とかしたいなぁと思っていました。

Review Appsとは

最近、HerokuはGitHubとの連携を強化しています。以前だったら

  • GitHubの特定のブランチにPushされたら、Herokuにデプロイする

ということを実現しようとすると、CircleCIなどのCIツールを使ってやるのが一般的でした。 そこが最近変わりました。Heroku側からGitHubと直接連携して、「GitHubの変更を受けてHerokuにデプロイ」がHeroku側の画面でポチポチやるだけで簡単に実現できるようになっています。

この時点でかなり便利なのですが、さらに「Pull RequestがオープンされたらHerokuにデプロイする」というものができています。これがReview Appsです。まだβ版の機能ですがとても魅力的です。

Pull Requestの時点で動くものをレビュワーが見ることができるのは本当に便利で、コードレビューする人が実際に動くのを確認できるのはもちろんのこと、コードレビューには参加しない非エンジニアメンバーにもリンク渡して、この挙動やデザインはどうよ?と見てもらうことが可能になるわけですね。これは開発上の手戻りや無駄な作業を防ぐ意味でとても効果高いんじゃないかと思います。

使い方

まず前提として、アプリをHerokuで動くようにするということ。 たとえばデフォルトのDBがPostgresだったりしますが、MySQLのアドオンを入れればMySQLで動くようになります。その他、Redisやなにがしかのミドルウェアを使っているならそのアドオンを追加する必要がありますね。

Review Appsで作られるアプリは新しいアプリとしてHerokuに作られますが、そのときに環境変数やアドオンなどは元になったアプリから継承することができます。引き継がずに新たに設定することもできるので、データベースなんかは作られるアプリのインスタンスごとに新しく作っておいたほうが、DBの構造を変えるPull Requestが投げられても、元のアプリや他のPull RequestのReview Appsに影響を与えずに済むかと思います。

Review Appsを有効化するにはDeployタブのこの辺りにあるリンクを押せば飛べます。

ここから、環境変数やアドオンのどれを引き継いで、どれを新規設定するかというのが書かれたapp.jsonを作成してリポジトリに突っ込むと有効になります。 Review Appsを有効化すると、このように既存のPRについてはCreate Appボタンが押せるようになります。エラーが出てしまったものは赤で表示されます。

Pull Requestが作られると自動的にReview Appsが作られるようにも設定可能で、その場合GitHub画面にこのように表示され、"Deployed"がそのアプリへのURLリンクになっています。

参考にさせていただいたスライド

Review Appsで無限ステージング環境 // Speaker Deck