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 の機能について概要を学習しました。次の単元では一部の機能についてさらに詳細を学習します。