進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

Heroku Flow とその機能の詳細

学習の目的

この単元を完了すると、次のことができるようになります。

  • Heroku Flow による一般的な継続的配信ワークフローについて説明する。
  • Heroku Flow の機能を挙げて、それぞれの目的を説明する。

Heroku Flow は、Heroku プラットフォームでの継続的配信のための、構造化された使いやすいワークフローです。Heroku パイプライン、レビューアプリケーション、リリースフェーズ、Heroku CI や、GitHub および Slack インテグレーションを、シンプルで視覚的なコードから本番へのワークフローにまとめます。

一般的な Heroku 継続的配信ワークフローは、次のようになります。

  1. 開発者またはチームメンバーが Heroku パイプラインを作成し、アプリケーションを追加し始めます。
  2. 開発者が、アプリケーションのコードベースを変更するプル要求を作成します。
  3. Heroku によってプル要求のレビューアプリケーションが自動的に作成されて、開発者は変更をテストできるようになります。
  4. 変更の準備が完了している場合、コードのマスタブランチにマージされます。
  5. マスタブランチが、さらなるテストのために、ステージングアプリケーションに自動的にリリースされます。
  6. Heroku CI またはリリースフェーズが設定されている場合、テストおよび ToDo の実行により、コード変更による問題や、リリースフェーズで処理するように設定されている ToDo (データベース移行など) での問題があるかどうかが確認されます。
  7. すべての準備が完了すると、ステージングアプリケーションは本番に昇格されて、変更内容がエンドユーザに届けられます。
  8. Slack でパイプラインが統合されている場合、プル要求が作成されてコードがマスタにマージされると通知がルームに投稿されて、チームは CI テストとリリースフェーズ ToDo の状況および結果の最新情報を知ることができます。適切な権限を持つチームメンバーも、Slack ルームから、アプリケーションをリリースして、ステージングまたは本番への昇格を行うことができます。

注意: このモジュールでは、Heroku ChatOps (Slack インテグレーション) の設定方法は扱いません。詳細は、こちらのドキュメントを参照してください。

次に、Heroku Flow の機能について学び、個々の目的を理解しましょう。

Heroku パイプライン

パイプラインとは、同じコードベースを共有する、Heroku アプリケーションのグループです。パイプラインの各アプリケーションは、継続的配信ワークフローでのレビュー、開発、ステージング、本番というステップのいずれかを示しています。パイプライン概要ページは、アプリケーションの進行状況や、各フェーズの状況のメタ情報の視覚化に便利です。たとえば、本番アプリケーションがステージングと異なるコードを実行しているかどうかを確認できます。

GitHub インテグレーション

Heroku パイプラインを GitHub リポジトリに関連付けることで、あらゆる GitHub プッシュから手動または自動でブランチをリリースできます。すべてのリリースに対し、Heroku ダッシュボードのアプリケーションの [Activity (活動)] タブで、現在のリリースと前回のコミットの違いを確認できます。このため、アプリケーションのコードの内容を推測する必要がありません。Heroku CI または外部の継続的インテグレーション (CI) サーバを使用するように GitHub リポジトリを設定している場合、CI によって特定のコミットが渡された後、ブランチの自動リリースのみ行うように Heroku を設定できます。

レビューアプリケーション

レビューアプリケーションは、コードベース変更のマージを提案、協議、決定するための新しい手法です。GitHub に関連付けられた Heroku アプリケーションの場合、Heroku では、オープンのプル要求 (PR) の固有 URL の一時的なテストアプリケーションを手動または自動で実行できます。一時的なアプリケーションはコミットごとに自動更新されるため、審査担当者はコードの動作を推測するのではなく、ブラウザで実際に変更内容を試せます。

リリースフェーズ

リリースフェーズを通じて、リリースが本番に適用される前に ToDo を実行できるようになり、メンテナンス期間の削減やリリースリスクの排除を実現します。リリースフェーズを利用すると、データベースの移行、コンテンツ配信ネットワーク (CDN) へのアセットのアップロード、キャッシュの無効化のほか、本番のためにアプリケーションが準備する必要のある他の ToDo を実行できます。リリースフェーズ ToDo が失敗した場合、新しいリリースは行われず、現在の本番リリースは影響を受けません。

Heroku CI

Heroku CI は、Heroku パイプラインと連携する、簡単な設定のテスト実行ツールです。Heroku CI は、ステージングと本番環境で変わらない廃棄可能なアプリケーションを利用して、短時間で結果を得られるようにゼロキュー時間でテストスクリプトを実行します。Heroku または GitHub からテスト結果にアクセスしたり、CI 結果に対して条件付きでリリースを自動化したりすることができ、また、チームベースの継続的配信での CI の役割を支援するために構築された視覚的なインターフェースを利用できます。

Heroku ChatOps

Heroku ChatOps は、Heroku パイプラインを利用して、Slack での協力型リリースワークフローを実現します。これにより、開発者は Slack からステージングまたは本番への昇格のためのリリースを実行できるようになります。Heroku ChatOps を使用すると、チームメンバーは Slack チャンネルからすべてのコード変更を追跡できます。プル要求通知、マージ、CI ビルド結果は、Slack ですべて表示されるため、ビルド結果の確認や、本番への昇格が正常に行われたかどうかの確認のために、コンテキストを切り替える必要はありません。