ロールアウトとリリースを管理する

自動ロールアウトを有効にしている場合、GitHub リポジトリのライブ ブランチに新しい commit を push するたびに、App Hosting はアプリの新しいバージョンを自動的にロールアウトします。ロールアウトのステータスは、Firebase コンソールまたは App Hosting GitHub チェックで確認できます。

さらに、App Hosting は、CI / CD 統合や、ロールアウトを強制的に実行するその他のケースで、手動でトリガーされるロールアウトをサポートしています。

ロールアウトを表示する

Firebase コンソールでは、アプリのすべてのロールアウトに関する詳細情報にアクセスできます。

[Hosting & Serverless] > [App Hosting] に移動し、ロールアウトを表示するバックエンドの [表示] を選択します。バックエンドの [ロールアウト] タブには、このバックエンドのすべてのロールアウトの履歴を一覧表示するテーブルが表示されます。

各ロールアウト エントリには、Cloud Build ジョブへのリンクと、ロールアウトをトリガーした変更または commit へのリンク、作成者、作成日、ロールアウトのステータスに関する基本情報が含まれています。

  • Cloud Build ジョブは、App Hosting がアプリのビルドコマンドを実行するビルド環境です。Cloud Build ログにアクセスするには、ビルド ID をクリックします。
  • 変更は、ロールアウトをトリガーした GitHub commit またはその他のアクションです。

ロールアウトを手動でトリガーする

新しい commit を push せずに GitHub ソースからロールアウトを手動でトリガーする場合は、Firebase コンソールまたは Firebase CLI からロールアウトを作成できます。これは、次のような場合に役立ちます。

  • 静的コンテンツの再生成を強制する。
  • CI / CD システムがロールアウトをトリガーできるようにする。
  • 本番環境のロールアウトを特定の日時に制限する。

Firebase コンソールでロールアウトをトリガーするには:

  1. Firebase コンソールで、[ホスティングとサーバーレス] > [App Hosting] に移動します。
  2. ロールアウトを作成するバックエンドの [表示] をクリックします。
  3. バックエンド ダッシュボードの概要で、[ロールアウトを作成] を選択します。
  4. デプロイするブランチを選択します。
  5. デプロイする commit を選択します。最新の commit または commit ID で指定された以前の commit のいずれかです。
  6. [作成] を選択します。ロールアウトのステータスとビルド番号がロールアウト履歴テーブルに表示されます。ロールアウト プロセスが完了すると、このロールアウトが現在のロールアウトとして表示されます。

Firebase CLI でロールアウトをトリガーするには、次のコマンドを実行し、プロンプトが表示されたらロールアウトのブランチを選択します。

firebase apphosting:rollouts:create BACKEND_ID

または、--git-branch オプションを使用して、特定のブランチの最新の commit のロールアウトを開始することもできます。

firebase apphosting:rollouts:create BACKEND_ID
--git-branch BRANCH_NAME

--git-commit オプションを使用して、特定の commit でロールアウトを作成することもできます。

firebase apphosting:rollouts:create BACKEND_ID
--git-commit COMMIT_ID

以前のロールアウトを復元する

App Hosting では、以前のロールアウトを復元する方法が 2 つあります。

  • 再ビルドせずにすぐにロールバックする
  • 再ビルドして以前のバージョンにロールバックする

インスタント ロールバックを作成する

新たにデプロイしたロールアウトで重大なバグが見つかった場合や、不安定なビルドによって新しいロールアウトがブロックされている場合など、アプリを以前のバージョンにすばやく戻すことが必要になる場合があります。このような場合は、以前のロールアウトから任意の既存のコンテナ イメージを復元できます。このイメージは再ビルドされませんが、最初にビルドされたときのコードと環境構成が使用されます。

インスタント ロールバックを作成するには:

  1. Firebase コンソールで、[ホスティングとサーバーレス] > [App Hosting] に移動します。
  2. ロールバックを作成するバックエンドの [表示] をクリックします。
  3. [ロールアウト] タブを選択します。
  4. バックエンドの [履歴] テーブルで、以前のビルドのその他メニューを選択します。
  5. [このビルドにロールバックする] を選択して、確認します。

再ビルドとロールバック

アプリの古いバージョンに戻し、現在の構成を維持する場合は、ロールバック プロセスの一環としてアプリを再ビルドできます。たとえば、最新バージョンで Secret Manager の API キー値を更新した場合、再ビルドすることで、ロールバック後に新しいキーがアプリで使用されるようになります。

再ビルドしてロールバックするには:

  1. Firebase コンソールで、[ホスティングとサーバーレス] > [App Hosting] に移動します。
  2. ロールバックを作成するバックエンドの [ダッシュボードを表示] をクリックします。
  3. [ロールアウト] タブを選択します。
  4. [ロールアウトを作成] を選択します。
  5. [ロールアウトを作成] ダイアログで、[以前の commit] を選択し、再ビルドしてロールバックするバージョンの commit ID を入力します。commit ID は、ロールアウト履歴に表示される各ロールアウトの「変更の詳細」の一部であり、ラベルの括弧内に含まれています。
  6. [作成] を選択してロールバックを開始します。

ロールアウトの設定を変更する

バックエンドのダッシュボードの [設定] > [デプロイ] ビューのコントロールを使用して、ロールアウトのライブ ブランチを変更したり、自動ロールアウトを有効または無効にしたりできます。

  1. Firebase コンソールで、[ホスティングとサーバーレス] > [App Hosting] に移動します。
  2. ロールアウト設定を更新するバックエンドの [表示] をクリックします。
  3. バックエンド ダッシュボードで [設定] を選択します。デフォルトのビューには、ドメインとカスタム ドメインに関する情報が表示されます。
  4. [デプロイ] ビューを選択します。このビューでは、ロールアウトのライブブランチを変更したり、自動ロールアウトを無効または有効にしたりできます。また、アプリのルート ディレクトリとバックエンドの環境を設定するオプションもあります(複数の環境にデプロイするをご覧ください)。

自動ロールアウトを管理する

デフォルトでは、App Hosting はすべてのファイルの「必須」リストを想定しています。つまり、リポジトリへの新しい commit ごとに、新しいビルドとロールアウトがトリガーされます。ただし、時間を節約し、不要なデプロイを防ぐために、commit で変更された特定のファイルパスに基づいてビルドをスキップするように App Hosting を構成できます。

これは、[設定] > [ロールアウト] > [ロールアウト トリガー] で構成できます。ここで、リポジトリへの新しい commit ごとに新しいビルドとロールアウトをトリガーする場合は、[Required Paths] を空白のままにします。または、常にロールアウトをトリガーするディレクトリまたはファイルを正確に指定することもできます。ディレクトリを指定する場合は、変更によってロールアウトがトリガーされるすべてのパスを追加してください。

[無視するパス] に追加したディレクトリまたはファイルによって自動ロールアウトがトリガーされることはありません。サブディレクトリが必須リストと無視リストの両方に該当する場合、自動ロールアウトはトリガーされません。無視するパスのリストのみを入力すると、App Hosting は必須パスに「*」を自動入力します。

このページで説明する UI のスクリーンショット。

変更されたファイルが必須パスと一致しない commit を push した場合(または、無視されたパスによってすべての変更が明示的に除外された場合)、App Hosting は GitHub イベントの受信を確認しますが、ビルドとロールアウトの状態を SKIPPED としてマークし、自動ロールアウトはトリガーされません。