自動ロールアウトが有効になっている場合、GitHub リポジトリの ライブブランチに新しい commit を push するたびに、App Hostingによってアプリの 新しいバージョンが自動的にロールアウトされます。ロールアウトのステータスは、 FirebaseコンソールまたはApp Hostingの GitHub チェックで確認できます。
また、App Hosting では、 CI/CD 統合や、ロールアウトを強制的に実行する場合など、手動でトリガーされるロールアウトもサポートしています。
ロールアウトを表示する
Firebase コンソールでは、アプリのすべての ロールアウトに関する詳細情報にアクセスできます。
[Hosting & Serverless]> [App Hosting], ロールアウトを表示するバックエンドの [View]を選択します。バックエンドの [ロールアウト] タブに、このバックエンドのすべてのロールアウトの履歴を示す表が表示されます。
各ロールアウト エントリには、Cloud Build ジョブと ロールアウトをトリガーした変更または commit へのリンクが含まれています。また、作成者、作成日、ロールアウトのステータスに関する基本情報 も含まれています。
- Cloud Build ジョブは、App Hosting がアプリのビルドコマンドを実行する ビルド環境です。ビルド ID をクリックすると、Cloud Build ログにアクセスできます。
- [変更] は、ロールアウトをトリガーした GitHub commit またはその他のアクションです。
手動でロールアウトをトリガーする
新しい commit を push せずに GitHub ソースから手動でロールアウトをトリガーする場合は、Firebase コンソールまたは Firebase CLI からロールアウトを作成できます。これは、次のような場合に便利です。
- 静的コンテンツの再生成を強制する。
- CI/CD システムでロールアウトをトリガーできるようにする。
- 本番環境のロールアウトを特定の日付または時間に制限する。
Firebase コンソールでロールアウトをトリガーするには:
- Firebase コンソールで、[**Hosting / サーバーレス**] > [**App Hosting**] に移動します。
- ロールアウトを作成するバックエンドの [表示] をクリックします。
- バックエンド ダッシュボードの概要で、[ロールアウトを作成] を選択します。
- デプロイするブランチを選択します。
- デプロイする commit を選択します。最新の commit または commit ID で指定された以前の commit を選択できます。
- [作成] を選択します。ロールアウトのステータスとビルド番号がロールアウト履歴テーブルに表示されます。ロールアウト プロセスが完了すると、このロールアウトが現在のロールアウトとして表示されます。
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 つ用意されています。
- 再ビルドせずに即座にロールバックする
- 再ビルドして以前のバージョンにロールバックする
即時ロールバックを作成する
新規にデプロイしたロールアウトで重大なバグが発見された場合や、新しいロールアウトをブロックする不安定なビルドが発生している場合など、アプリの古いバージョンにすばやく戻す必要がある場合があります。このような場合は、以前のロールアウトから既存のコンテナ イメージを復元できます。このイメージは再ビルドされませんが、最初にビルドされたときのコードと環境構成が使用されます。
即時ロールバックを作成するには:
- Firebase コンソールで、[**Hosting / サーバーレス**] > [**App Hosting**] に移動します。
- ロールバックを作成するバックエンドの [表示] をクリックします。
- [ロールアウト] タブを選択します。
- バックエンドの [履歴] テーブルで、以前のビルドのその他メニューを選択します。
- [このビルドにロールバックする] を選択して確定します。
再ビルドしてロールバックする
アプリの古いバージョンに戻したいが、現在の構成は維持したい場合は、ロールバック プロセスの一環としてアプリを再ビルドできます。たとえば、最新バージョンで Secret Manager の API キーの値が更新された場合、再ビルドすることで、ロールバック後にアプリで新しいキーが使用されるようにできます。
再ビルドしてロールバックするには:
- Firebase コンソールで、[**Hosting / サーバーレス**] > [**App Hosting**] に移動します。
- ロールバックを作成するバックエンドの [ダッシュボードを表示] をクリックします。
- [ロールアウト] タブを選択します。
- [ロールアウトを作成] を選択します。
- [ロールアウトを作成] ダイアログで、[以前の commit] を選択し、再ビルドしてロールバックするバージョンの commit ID を入力します。commit ID は、[ロールアウト履歴] に表示される各ロールアウトの [変更の詳細] の一部で、ラベルのカッコ内に含まれています。
- [作成] を選択してロールバックを開始します。
ロールアウト設定を変更する
ロールアウトのライブブランチを変更したり、バックエンドのダッシュボードの [設定 > デプロイ] ビューのコントロールを使用して自動ロールアウトを無効または有効にしたりできます。
- Firebase コンソールで、[**Hosting / サーバーレス**] > [**App Hosting**] に移動します。
- ロールアウト設定を更新するバックエンドの [表示] をクリックします。
- バックエンド ダッシュボードで [設定] を選択します。デフォルト ビューには、ドメインとカスタム ドメインに関する情報が表示されます。
- [デプロイ] ビューを選択します。このビューでは、ロールアウトのライブブランチを変更したり、自動ロールアウトを無効または有効にしたりできます。また、 アプリのルート ディレクトリとバックエンドの環境を設定するオプションもあります( 複数の環境にデプロイするをご覧ください)。
自動ロールアウトを管理する
デフォルトでは、App Hosting は すべて のファイル __の「必須」リストを想定しています。つまり、 リポジトリへの新しい commit ごとに、新しいビルドとロールアウトがトリガーされます。ただし、 時間を節約し、不要なデプロイを防ぐために、App Hosting commit で変更された特定のファイルパスに基づいてビルドをスキップするように構成できます。
これは、[設定 > ロールアウト > ロールアウト トリガー] で構成できます。リポジトリへの新しい commit ごとに新しいビルドとロールアウトをトリガーする場合は、[必須パス] を空白のままにします。また、常にロールアウトをトリガーするディレクトリまたはファイルを正確に指定することもできます。ディレクトリを指定する場合は、変更によってロールアウトをトリガーするパスをすべて 追加してください。
[無視するパス] に追加したディレクトリまたはファイルからは、自動ロールアウトはトリガーされません。サブディレクトリが必須リストと無視リストの両方に該当する場合、自動ロールアウトはトリガーされません。 無視するパスのリストのみを入力すると、App Hosting は必須パスに「*」を自動入力します。
変更されたファイルが必須パスと一致しない commit を push した場合
(または、無視するパスによってすべての変更が明示的に除外されている場合)、
App Hosting は GitHub イベントの受信を確認しますが、ビルドとロールアウトの状態を SKIPPED としてマークし、自動ロールアウトは
トリガーされません。