SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Herokuではじめるチーム開発と運用

Herokuとチーム開発のおいしいレシピ~HerokuとGitHubを連携してCI/CDを実現する

Herokuではじめるチーム開発と運用 第2回

プルリクエストとReviewAppを連携させて、シームレスにCDを実現する

 では実際に、サンプルのソースコードを使って、Heroku Pipelinesによるアプリケーションデプロイ&リリースを体験してみましょう。

 こちらの作業を行うにはHerokuアカウントが必要になります。まだお持ちでない方は「Herokuを利用するにあたっての事前準備~サインアップおよびHeroku CLIのインストール」の手順に従って、Herokuアカウントの作成と、Heroku CLIをご準備ください。

 なお、今回利用するソースコードは、GitHubで公開しているhttps://github.com/tabesfdc/delicious_recipesを利用します。ご自分の環境で試せる方は、当ソースコードをForkして、ご自分のGitHubリポジトリへコピーしてから、試していただくことをおすすめします。

 今回想定しているシナリオは、次のとおりです。

  1. GitHub Flowで実行されることを想定して、GitHubリポジトリにはmasterではない別のブランチ名で、プルリクエストがあげられるものとします。
  2. このプルリクエストを受け付けて、自動的にビルドされたReview Appでテストを行います。
  3. GitHub側では、テストに問題がなかった場合masterブランチへマージを行います。
  4. Heroku Pipelines側では、masterブランチへのマージを認識して、ステージング環境へ自動的にビルドしてテストが行える状態にします。
  5. 最終的に、このステージング環境で問題のなかったアプリケーションは、本番環境へリリースします。

 このために必要な、Heroku PipelinesとGitHub連携、Heroku CIの自動化を設定します。

Heroku Pipelinesを作成する

 Heroku Pipelinesを作成する前に、「ステージング用」「プロダクション用」のHerokuアプリケーションを作成しておきます。先にHeroku Pipelinesを作成してもよいのですが、アプリケーションが準備されている方が手順が楽です。現時点では、特にアプリケーションは何もデプロイしていなくても大丈夫です。

 Herokuへログインして、Herokuダッシュボードを開きます。右上に[New]ボタンがあるので、こちらをクリックして「Create new pipeline」を実行します。すると、図4の「Create New Pipeline」画面に移るので、「Pipeline Information」に識別しやすい名前をこのパイプラインに名付けます。もう一つ[Connect to GitHub]で、自分のリポジトリを検索して接続します。該当のGitHubリポジトリのプルリクエストと連携するために、このGitHub連携は必須です。

図4 Heroku Pipeline作成画面
図4 Heroku Pipeline作成画面

 先ほど準備したアプリケーションをHeroku Pipelinesへ登録します。画面内に「STAGING」と「PRODUCTION」という箇所がありますので、そちらへ割り当てます。各々の[Add Existing App...]をクリックして、該当のHerokuアプリケーション名を入力して選択します。なんとなくお分かりいただけると思いますが、「STAGING」も「PRODUCTION」も、複数のアプリケーションを登録することができます。複数の開発を行っている場合、同時に複数のテスト環境などを準備することができ、複数の本番環境を制御できるようになっています。実際に登録してみると、図5のような画面になります。

 図5 Heroku Pipeline画面
図5 Heroku Pipeline画面

プルリクエストとHeroku Pipelinesを連携させ、Review Appでテストを行う

 次に、さきほど連携したGitHubのリポジトリでプルリクエストの要求が発生したら、自動的にReview Appがビルドされるように準備しましょう。

 「REVIEW APPS」内に[Enable Review Apps]ボタンがありますので、こちらをクリックします。すると、図6の「Enable Review Apps」ウィンドウが表示されます。ここでは「Review App」として実行される際、その元となる「Config Vars」いわゆる環境変数をどの環境のものを元にするかを選択します。この画面では「staging-recipes」に割り当てたものを利用しています。「Create new review apps for new pull requests automatically」にチェックを入れます。これで、プルリクエストが要求された時に、自動的にReview Appをビルドすることができるので、この機能も利用しましょう。あとは[Enable]するだけです。これでGitHubリポジトリへのプルリクエストと連携して、自動的にReview Appを準備できます。カンタンですね。

図6 「Enable Review Apps」設定画面
図6 「Enable Review Apps」設定画面

自動的にHerou CIとデプロイを行うように設定する

 2つの自動化の設定を行って、CI/CD環境を完成させましょう。

 まずHeroku CIを使うようにします。Heroku Pipelinesの画面内の左上に[Settings]タブがあります。こちらのタブをクリックして表示すると、図7の設定画面になるので、ここで[Enable Heroku CI]を押して、Heroku CIを自動的に実行可能にしましょう。

図7 「Heroku CI」を設定する
図7 「Heroku CI」を設定する

 二つ目の自動化は、GitHubのmasterブランチへソースコードがマージされたら、自動的にステージング環境へデプロイを行いましょう。[Pipeline]タブへ戻って、ステージング用のHerokuアプリケーションの右上にある上下矢印のボタンをクリックして、図8のプルダウンメニューから[Configure automatic deploys...]を選択します。

図8 自動化メニュー
図8 自動化メニュー

 「Configure automatic deployment for xxxxxx」という設定画面が出てくるので、「Choose a branch to automatically deploy」のリストから、自動的にデプロイさせたいブランチを選択します。今回はmasterブランチにソースコードがプッシュ/マージされた場合を想定しているので、図9のようにmasterを選択します。Heroku CIでのテストも自動化しているので、Heroku CIのテストが通った場合にだけステージング環境へデプロイするために、「Wait for CI to pass before deploy」にもチェックを入れて[Enable Automatic Deploys]をクリックして、デプロイを自動化しましょう。

図9 masterブランチが更新されたら、自動的にステージング環境へデプロイ
図9 masterブランチが更新されたら、自動的にステージング環境へデプロイ

次のページ
シナリオ通りにアプリケーションをリリースしてみる

この記事は参考になりましたか?

Herokuではじめるチーム開発と運用連載記事一覧

もっと読む

この記事の著者

阿部 崇(株式会社セールスフォース・ドットコム)(アベ タカシ)

 過去、金融系の大規模インフラアーキテクチャのデザインを担当するアーキテクトに従事し、その経験を活かして、2016年よりプラットフォーム専属のエンジニアとして Salesforce.com へ入社。Salesforce.com では、Force.com や Heroku を軸とした、マルチクラウドシ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10233 2017/06/13 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー