Heroku

Heroku Review AppsでPRごとに動作環境を作成せよ

More than 1 year has passed since last update.

はじめに

Herokuの機能であまりメジャーではないがReview Appsと言う機能がある、GithubのPull Requestごとに動作可能な環境を自動で作ってくれるすぐれものだ

これがすごいのはエンタープライズモードじゃなくても使えるし、使用するaddonによっては無料枠で使うことができる

コードレビューする際に動作を確認したい場合に簡単にチェックすることができる。わざわざ自分のローカル環境にPullして動作確認する必要が無いのだ!!

またPRをマージしたりクローズするとHerokuのアプリも連携して削除されるので削除し忘れるということもない

以下の条件をみたす場合は導入することをおすすめする

  • Herokuで稼働しているWebアプリ
  • 複数人のチームで開発している
  • コードのホスティングはGithub

サンプルコード

なおサンプルアプリはRailsのscaffoldで適当に作ったアプリを利用する

サンプルコードはこちら
https://github.com/konyu/reviewapp/

Herokuの設定

前提条件

HerokuでAppを作成済みで、動作可能なアプリが動いていること

対象のGithubのリポジトリのオーナーか、Organizationの強い権限である必要がある(未検証)

RewviewAppsの設定する

Herokuのダッシュボード画面に行き、対象のアプリのリンクをクリックしアプリケーションのトップページを開く

Deployのタブをクリックする

スクリーンショット 2016-06-23 17.41.15.png

New Pipelineボタンを押すと以下のようにPipeline名を求められる

パイプライン名を求められるがデフォルトのHeroku App名のままにしておく方がわかりやすくて良いだろう

Create Pipelineボタンを押す

これでPipelineが作成される

Connect To Githubボタンを押す

orgaizationか自分のアカウントのリポジトリを検索して、対応するgithubリポジトリを探し、connectボタンを押して連携する

※初めてHerokuとGithubを連携する場合は、GithubとのAuth連携(FB連携機能見たいのが出る場合

Githubとの連携後、DeployのタブにREVIEW APPSの項目が表示されている

Enable review Apps... ボタンを押す

ダイアログが表示され
Create an App.json File... ボタンを押す

※ GithubのリポジトリにReviewApps用のapp.jsonファイルがなければこのダイアログが表示される

App.jsonの雛形となるフォームが表示される

各項目の内容は以下の様な感じ(Railsアプリの場合)

Scripts

Post deploy script (optional)
  bundle exec rake db:schema:load db:seed(つまりDBにテーブルを作成し、seedデータを挿入するなど、アプリが起動時に動くようにする準備)

Buildpacks
  heroku/ruby(デフォルトのまま)
  
Config Vars
    ReviewAppの場合に特別変更する場合以外は変更の必要はない
    Add-onの環境変数がここになくても問題ない(Postgresの環境変数DATABASE_URLなど)

画面下部に、上記設定で作成されるapp.jsonファイルの例が表示される

Commit to Repoボタンを押すとGithubのリポジトリにapp.jsonが追加されコミットされている

※ 確認したい場合はGithubのmasterリポジトリを確認する

ダイアログが表示されるので、以下の二つのチェックを入れる

Create new review apps for new pull requests automatically
のチェックを入れるとPR時に新しいアプリを作ってくれる

Destroy stale review apps automatically
5日起動しないと消える。ほっておいても良い

Enableボタンを押すと設定完了

app.jsonの内容を修正したい場合

このapp.jsonは後からも修正できるし、add-onのプランはデフォルトだと一番安いプランになり、プランの変更はadd-on名:プラン名で指定できる

https://devcenter.heroku.com/articles/app-json-schema#example-app-json

動作確認

リポジトリに適当な変更を追加する

ローカル環境のリポジトリのディレクトリに移動して以下の作業をする

# masterにgit pullする
git checkout master
git pull

# サンプルのブランチをbranchと言う名前で作る
git checkout -b branch

# 適当なファイルを作成し追加する
touch sample.txt
git add -A
git commit -m "test revie apps"

#branchブランチをgithubuにプッシュする
git push --set-upstream origin branch

GithubでPull Requestを作る

branchリポジトリをmasterに対してPull Requestをつくる

PRを作った後にHerokuがreview用のアプリを作る間pendingの期間を減るとView developmentボタンが表示される

View developmentを押す

Review向けのアプリのURLが開き動作確認することができる

Herokuの画面で確認

ダッシュボードから、パイプライン名のリンクをクリックして確認するとReveiw Appsが作成されているのがわかる。

Review Appをクリックすると、Appの詳細も把握できる

Review Appsの削除

PRをマージしたりクローズするとHerokuのアプリも連携して削除される
PullrequestをReOpenすれば、再度作ってくれる