サイトのライブチャネルとプレビュー チャネル、リリース、バージョンを管理する

Firebase Hosting には、Firebase コンソールと Firebase CLI の両方で、Hosting サイトのチャネル、リリース、バージョンを管理するためのツールが用意されています。

Hosting インフラストラクチャの概要

Hosting インフラストラクチャを理解すると、このページに記載の管理オプションを理解するのに役立ちます。

すべての Firebase プロジェクトには、そのプロジェクトのすべてのリソース(データベース、認証、関数など)にアクセスできる、デフォルトの Hosting サイトがあります。サイトには 1 つ以上のチャネルがあり、各チャネルは特定のコンテンツと Hosting の構成を提供する URL に関連付けられています。

Firebase Hosting 階層の画像

すべての Hosting サイトには、(1)Firebase でプロビジョニングされたサブドメイン(SITE_ID.web.appSITE_ID.firebaseapp.com)と(2)接続されたカスタム ドメインに、コンテンツおよび Hosting 構成を提供する「ライブ」チャネルがあります。オプションとして、共有可能で一時的な「プレビュー URL」で独自のコンテンツと構成を提供する「プレビュー」チャネルを作成することもできます(SITE_ID--CHANNEL_ID-RANDOM_HASH.web.app)。

各チャネルで提供されるコンテンツと構成は、一意の識別子を持つバージョン オブジェクトにパッケージ化されます。サイトにデプロイすると、Firebase は特定のバージョンのコンテンツと構成を指すリリース オブジェクトを作成します。リリースには、デプロイしたユーザーとデプロイ時刻など、デプロイに関するメタデータが含まれます。

Firebase プロジェクトの Hosting ダッシュボードにある [リリース履歴] テーブルで、ライブチャネルのリリースの全履歴を確認できます。Hosting サイトが複数ある場合は、目的のサイトの [表示] をクリックして、リリース履歴を表示します。プレビュー チャネルがある場合は、Hosting ダッシュボードにも表示されます。

チャネルの設定を管理する

サイトのチャネルごとに設定を管理できます。チャネルの有効期限など、一部の設定はプレビュー チャネルにのみ適用されます。

保持するリリース数を制限する

チャネルにデプロイする(およびリリースを作成する)たびに、Hosting は以前のリリースに関連付けられたバージョンをプロジェクトの Hosting ストレージに保持します。プロジェクト内のそれぞれのチャネル(ライブチャネルとプレビュー チャネルの両方)について、保持するリリース数を設定できます。

  • Hosting で以前のリリースが保持されるのはなぜですか?
    ライブチャネルの場合、以前のリリースを保持することで、必要に応じて以前のバージョンのサイトにロールバックできます。現時点では、プレビュー チャネルのロールバックはご利用いただけません。

  • 保持するリリースの数を制限するのはなぜですか?
    この機能を使用して、プロジェクトの Hosting ストレージの使用量レベルを制御できます。以前のリリースのコンテンツはこのストレージに保持されています。Hosting のストレージは、コンソールの [ストレージ] タブからモニタリングできます。

  • 保持するリリース数を制限すると、どうなりますか?
    保持するリリース数の上限を設定すると、設定した上限を超えたリリースのコンテンツは、古いリリースから順に削除されるようスケジュールされます。

チャネルで保持するリリース ストレージの上限は、次のように設定します。

  1. Firebase コンソールで、リリース ストレージ設定ダイアログにアクセスします。

    • ライブチャネルの場合
      サイトの [リリース履歴] テーブルで をクリックし、[ストレージのリリースに関する設定] を選択します。

    • プレビュー チャネルの場合
      プレビュー チャネルの行で をクリックし、[チャネル設定] を選択します。

  2. 保持するリリースの数を入力し、[保存] をクリックします。

プレビュー チャネルの有効期限を設定する

プレビュー チャネルは、デフォルトで作成日から 7 日後に有効期限が切れますが、サイトのライブチャネルに有効期限はありません。

プレビュー チャネルの期限が切れると、チャネルはリリースと関連するバージョンとともに 24 時間以内に削除されるようスケジュール設定されます。また、関連付けられているプレビュー URL も無効化されます。あるバージョンが別のリリースに関連付けられている場合(同じサイト内でチャネルのバージョンのクローンを別のチャネルに作成している場合など)は、この削除の対象になりません。

Hosting は、チャネルの有効期限の設定に 2 つの方法をサポートしています。

  • Firebase コンソール
    プレビュー チャネルの行で をクリックし、[チャネル設定] を選択します。有効期限の日付と時刻を入力します。

  • Firebase CLI
    プレビュー チャネルにデプロイする場合は、--expires DURATION フラグを渡します。次に例を示します。

    firebase hosting:channel:deploy new-awesome-feature --expires 7d

    有効期限は、デプロイした日から 30 日以内で設定できます。時間には h、日数には d、週には w を使用します(例: 12h7d2w)。

チャネルのバージョンのクローンを別のチャネルに作成する

デプロイされたチャネルのバージョンのクローンを、別のチャネルに作成できます。クローンは、ライブチャネル間、プレビュー チャネル間、Hosting サイト間、Firebase プロジェクト間で作成できます。

また、クローン コマンドも「ターゲット」のチャネルにデプロイされるため、クローン作成した Hosting のコンテンツと構成は、「ターゲット」のチャネルに関連付けられた URL で自動的に提供されます。

この機能は、バージョン トラッキングを行う場合や、別のチャネルで表示またはテストしたコンテンツをそのままデプロイしたい場合に便利です。次に例を示します。

  • 「QA」プレビュー チャネルのクローンを、サイトのライブチャネルに作成する(ライブ配信する)

  • サイトのライブチャネルのクローンを、「デバッグ」プレビュー チャネルに作成する(ロールバックを行う前のような状態にする)

  • 「ステージング」Firebase プロジェクトのチャネルのクローンを、「本番環境」Firebase プロジェクトのプレビュー チャネルに作成する

バージョンのクローンを作成するには、任意のディレクトリから次のコマンドを実行します。

firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:TARGET_CHANNEL_ID

各プレースホルダを次のように置き換えます。

  • SOURCE_SITE_IDTARGET_SITE_ID: チャネルが含まれる Hosting サイトの ID です。

    • デフォルトの Hosting サイトには、Firebase プロジェクト ID を使用します。
    • 同じ Firebase プロジェクトに属する Hosting サイトだけでなく、異なる Firebase プロジェクトの Hosting サイトも指定できます。
  • SOURCE_CHANNEL_IDTARGET_CHANNEL_ID: チャネルの ID です。

    • ライブチャネルの場合、live をチャネル ID として使用します。
    • 指定した「ターゲット」チャネルがまだない場合、このコマンドによってチャネルが作成された後にデプロイされます。

以前のバージョンのサイトにロールバックする

ロールバックすることで、サイトのライブチャネルの以前のバージョンを提供できます。この操作は、サイトの現在のリリースに問題があるため、ロールバックして過去に動作実績のあるバージョンを提供する場合に便利です。または、ホリデー シーズンや特別なイベント用の一時的なコンテンツから、「通常の」コンテンツにロールバックする場合にも役立ちます。

ロールバックすると、以前のリリースと同じバージョンのコンテンツを提供する新しいリリースが作成されます。[リリース履歴] のテーブルには、両方のリリースに同じバージョン ID が表示されます。

ロールバックする方法は次のとおりです。

  1. Firebase コンソールからサイトの [リリース履歴] テーブルで、ロールバックする以前のリリース エントリにカーソルを合わせます。

  2. をクリックし、[ロールバック] を選択します。

リリースを手動で削除する

プロジェクトの Hosting ストレージを解放するために、ライブチャネルからリリースを手動で削除しなければならない場合があります。削除できるのは、現在のサイトで現在提供されているリリースではなく、以前のリリースのみです。

リリースを削除すると、実際にはそのコンテンツが削除されます。これは 24 時間以内に削除されるようにスケジュール設定されます。リリース オブジェクト自体は保持されるため、メタデータ(デプロイしたユーザーとデプロイ時刻)は引き続き確認できます。

リリースを削除する方法は次のとおりです。

  1. Firebase コンソールからサイトの [リリース履歴] テーブルで、削除する以前のリリース エントリにカーソルを合わせます。

  2. をクリックし、[削除] を選択します。

ファイルの手動削除

Firebase Hosting では、デプロイされたサイトから選択したファイルを削除するには、ローカルでファイルを削除してから再デプロイすることです。

プレビュー チャネルを手動で削除する

プレビューするチャネルをクリックすると、チャネルをプレビューできます。ここでは、特定のチャネルに関連付けられている最新のデプロイとリリースを表示、削除、元に戻すことができます。プレビュー チャネルを削除できますが、サイトのライブチャネルは削除できません。

プレビュー チャネルを削除すると、そのチャネルとリリース、関連付けられているバージョンは 24 時間以内に削除されるようにスケジュール設定されます。また、関連付けられているプレビュー URL も無効化されます。あるバージョンが別のリリースに関連付けられている場合(同じサイト内でチャネルのバージョンのクローンを別のチャネルに作成している場合など)は、この削除の対象になりません。

Hosting は、プレビュー チャネルの削除に 2 つの方法をサポートしています。

  • Firebase コンソール
    プレビュー チャネルの行で をクリックし、[チャネルの削除] を選択します。削除を確認します。

  • Firebase CLI
    任意のディレクトリから次のコマンドを実行します。

    firebase hosting:channel:delete CHANNEL_ID

プレビュー チャネルとクローン作成用の CLI コマンド

プレビュー チャネル用のコマンド

プレビュー チャネルのすべてのコマンドは、複数の Hosting サイトがある場合、デプロイ ターゲットをサポートしています。

コマンド 説明
firebase hosting:channel:create CHANNEL_ID

指定された CHANNEL_ID を使用して、デフォルトの Hosting サイトに新しいプレビュー チャネルを作成します。

このコマンドではチャネルにデプロイされません。

firebase hosting:channel:delete CHANNEL_ID

指定したプレビュー チャネルを削除します。

サイトのライブチャネルは削除できません。

firebase hosting:channel:deploy CHANNEL_ID

Hosting のコンテンツと構成を指定したプレビュー チャネルにデプロイします。

プレビュー チャネルがまだない場合は、このコマンドによってチャネルへのデプロイ前にデフォルトの Hosting サイトにチャネルが作成されます。

firebase hosting:channel:list デフォルトの Hosting サイトにあるすべてのチャネル(ライブチャネルを含む)を一覧表示します。
firebase hosting:channel:open CHANNEL_ID 指定したチャネルの URL でブラウザを開くか、ブラウザで開くことができない場合は URL を返します。

バージョンのクローンを作成するためのコマンド

コマンド 説明
firebase hosting:clone \
SOURCE_SITE_ID:SOURCE_CHANNEL_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

指定した「ソース」チャネルに最後にデプロイされたバージョンのクローンを、指定した「ターゲット」チャネルに作成します。

このコマンドでは、指定した「ターゲット」チャネルにもデプロイされます。「ターゲット」チャネルがまだない場合、このコマンドにより、チャネルへのデプロイ前に「ターゲット」の Hosting サイトに新しいプレビュー チャネルが作成されます。

firebase hosting:clone \
SOURCE_SITE_ID:@VERSION_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

指定したバージョンのクローンを指定した「ターゲット」チャネルに作成します。

このコマンドでは、指定した「ターゲット」チャネルにもデプロイされます。「ターゲット」チャネルがまだない場合、このコマンドにより、チャネルへのデプロイ前に「ターゲット」の Hosting サイトに新しいプレビュー チャネルが作成されます。

VERSION_ID は、Firebase コンソールの Hosting ダッシュボードで確認できます。