Skip to main content

Heroku Flow とその機能の詳細

学習の目的

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

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

Heroku Flow とは?

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

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

  • 開発者またはチームメンバーが Heroku パイプラインを作成し、アプリケーションを追加し始めます。
  • 開発者が、アプリケーションのコードベースを変更するプルリクエストを作成します。
  • Heroku によってプルリクエストのレビューアプリケーションが自動的に作成されて、開発者は変更をテストできるようになります。
  • 変更の準備ができると、コードの main ブランチにマージされます。
  • main ブランチがさらなるテストのために、ステージングアプリケーションに自動的にリリースされます。
  • Heroku CI が設定されている場合、コードへの変更に問題がないか確認するテストが実行されます。リリースフェーズが設定されている場合、そのタスクはコードのリリース前に実行されます。リリースフェーズタスクの例として、データベース移行の処理などがあります。
  • すべてが準備できたら、開発者がステージングアプリケーションを本番に昇格して、変更をエンドユーザーが使用できるようにします。
  • パイプラインが Slack と統合されている場合、プルリクエストがオープンになり、コードが main にマージされると、通知が特定のチャネルに投稿されます。この投稿により、チームは CI テストとリリースフェーズタスクの状況と結果について最新情報を知ることができます。適切な権限を持つチームメンバーも Slack チャンネルからアプリケーションをステージングにリリースしたり、本番に昇格したりすることができます。

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

Heroku パイプライン

パイプラインとは、同じコードベースを共有する、Heroku アプリケーションのグループです。パイプラインの各アプリケーションは、継続的配信ワークフローでのレビュー、開発、ステージング、本番というステップのいずれかを示しています。

GitHub インテグレーション

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

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

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

リリースフェーズ

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

Heroku CI

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

Heroku ChatOps

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

この単元では Heroku Flow の機能について概要を学習しました。次の単元では一部の機能についてさらに詳細を学習します。

リソース 

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる