Firebase Hosting は、Firebase コンソールと Firebase CLI の両方を介してツールを提供し、ホスティング サイトのチャネル、リリース、およびバージョンを管理します。
ホスティング インフラストラクチャの概要
ホスティング インフラストラクチャを理解すると、このページで説明されている管理オプションを理解するのに役立ちます。
すべての Firebase プロジェクトには、プロジェクトのすべてのリソース (データベース、認証、機能など) にアクセスできるデフォルトのホスティングサイトがあります。サイトには 1 つ以上のチャネルが含まれており、各チャネルは特定のコンテンツを提供する URL とホスティング構成に関連付けられています。
すべての Hosting サイトには、(1) サイトの Firebase でプロビジョニングされたサブドメイン ( SITE_ID .web.app
およびSITE_ID .firebaseapp.com
) および (2) 接続されたカスタム ドメインで、コンテンツと Hosting 構成を提供する「ライブ」チャネルがあります。オプションで、一時的な共有可能な「プレビュー URL」( SITE_ID -- CHANNEL_ID - RANDOM_HASH .web.app
) で独自のコンテンツと構成を提供する「プレビュー」チャネルを作成することもできます。
各チャネルによって提供されるコンテンツと構成は、一意の識別子を持つバージョンオブジェクトにパッケージ化されます。サイトにデプロイすると、Firebase は特定のバージョンを指すリリースオブジェクトを作成します。リリースには、誰がいつデプロイしたかなど、デプロイに関するメタデータが含まれています。
Firebase プロジェクトのHosting ダッシュボードから、ライブ チャンネルのリリースの完全な履歴をリリース履歴テーブルで確認できます。複数のホスティング サイトがある場合は、目的のサイトの [表示]をクリックして、リリース履歴を表示します。プレビュー チャンネルがある場合は、ホスティング ダッシュボードにも表示されます。
チャンネルの設定を管理する
サイトのチャネルごとに、その設定を制御できます。チャネルの有効期限などの一部の設定は、プレビュー チャネルにのみ適用されます。
保持するリリース数を制限する
チャンネルにデプロイする (およびリリースを作成する) たびに、Hosting はプロジェクトの Hosting ストレージ内の以前のリリースに関連付けられたバージョンを保持します。プロジェクトの各チャンネル(ライブ チャンネルとプレビュー チャンネルの両方) に保持するリリースの数を設定できます。
Hosting が以前のリリースを保持するのはなぜですか?
ライブ チャネルの場合、以前のリリースを維持すると、必要に応じてサイトの以前のバージョンにロールバックできます。プレビュー チャンネルでは、ロールバックはまだ利用できません。保持するリリースの数を制限するのはなぜですか?
この機能は、以前のリリースのコンテンツがこのストレージに保持されるため、プロジェクトのホスティング ストレージの使用レベルを制御するのに役立ちます。コンソールの[ストレージ] タブからホスティング ストレージを監視できます。保持するリリースを制限するとどうなりますか?
保持するリリースの制限を設定すると、設定した制限を超えるすべてのリリースのコンテンツが、最も古いリリースから順に削除されるようにスケジュールされます。
チャネルのリリース ストレージ制限を設定する方法は次のとおりです。
Firebase コンソールで、リリース ストレージ設定ダイアログにアクセスします。
ライブ チャンネルの場合
サイトの [リリース履歴] テーブルで、[ ] をクリックし、[ストレージ設定のリリース] を選択します。プレビュー チャンネルの場合
プレビュー チャネルの行で、 をクリックし、[チャネル設定] を選択します。
保持するリリースの数を入力し、[保存] をクリックします。
プレビュー チャネルの有効期限を設定する
デフォルトでは、プレビュー チャネルは作成日から 7 日で期限切れになりますが、サイトのライブ チャネルは期限切れになりません。
プレビュー チャネルの有効期限が切れると、そのチャネルとそのリリースおよび関連するバージョンは、24 時間以内に削除される予定です。関連するプレビュー URL も無効になります。このバージョン削除の例外は、バージョンが別のリリースに関連付けられている場合です (これは、たとえば、同じサイト内のあるチャネルから別のチャネルにバージョンを複製した場合に発生します)。
ホスティングは、チャネルの有効期限を制御する 2 つの異なる方法をサポートしています。
Firebase コンソール
プレビュー チャネルの行で、 をクリックし、[チャネル設定] を選択します。有効期限の日時を入力します。Firebase CLI
プレビュー チャネルにデプロイするときは、--expires DURATION
フラグを渡します。次に例を示します。firebase hosting:channel:deploy new-awesome-feature --expires 7d
有効期限は、デプロイ日から最大 30 日間です。時間には
h
、日にはd
、週にはw
を使用します (たとえば、それぞれ12h
、7d
、2w
)。
あるチャンネルから別のチャンネルにバージョンを複製する
デプロイされたバージョンをあるチャネルから別のチャネルに複製できます。ライブ チャネルまたはプレビュー チャネル全体、ホスティング サイト全体、さらには Firebase プロジェクト全体でクローンを作成できます。
また、clone コマンドは「ターゲット」チャネルにデプロイされるため、複製された Hosting コンテンツと構成は、「ターゲット」チャネルの関連付けられた URL で自動的に提供されます。
この機能は、バージョンの追跡や、別のチャネルで表示および/またはテストした正確なコンテンツを展開していることを確認したい場合に役立ちます。ここではいくつかの例を示します。
「QA」プレビュー チャネルからサイトのライブ チャネルに複製します (ライブに移行します!)。
サイトのライブ チャネルから「デバッグ」プレビュー チャネルに複製します (ロールバック前など)。
「ステージング」Firebase プロジェクトのチャネルから「本番」Firebase プロジェクトのプレビュー チャネルにクローンを作成します。
バージョンを複製するには、任意のディレクトリから次のコマンドを実行します。
firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:TARGET_CHANNEL_ID
各プレースホルダーを次のものに置き換えます。
SOURCE_SITE_IDおよびTARGET_SITE_ID : これらは、チャネルを含むホスティング サイトの ID です。
- デフォルトのホスティング サイトには、Firebase プロジェクト ID を使用します。
- 同じ Firebase プロジェクトまたは別の Firebase プロジェクトにある Hosting サイトを指定できます。
SOURCE_CHANNEL_IDおよびTARGET_CHANNEL_ID : これらはチャネルの識別子です。
- ライブ チャンネルの場合は、チャンネル ID として
live
を使用します。 - 指定された「ターゲット」チャネルがまだ存在しない場合、このコマンドはチャネルにデプロイする前にチャネルを作成します。
- ライブ チャンネルの場合は、チャンネル ID として
あるチャネルから同じ Hosting サイト内の別のチャネルにバージョンを複製すると、Firebase はまったく同じバージョンを指す新しいリリース オブジェクトを作成します。 Hosting サイトに 2 つのリリースが表示されますが、どちらも同じバージョン (バージョン ID で識別) を指しています。
ただし、バージョンを別の Hosting サイト (または別の Firebase プロジェクト) のチャネルに複製すると、Firebase は新しいリリースと新しいバージョンの両方を作成します (別のバージョン ID で識別されます)。
サイトの以前のバージョンにロールバックする
ロールバックして、サイトのライブ チャネルの以前のバージョンを提供できます。このアクションは、現在のリリースに問題があり、サイトの既知の作業バージョンを提供するためにロールバックしたい場合に役立ちます。または、休日や特別なイベントのために一時的なコンテンツを提供していたサイトをロールバックして、「通常の」コンテンツを提供したいと考えているかもしれません。
ロールバックすることで、以前のリリースと同じバージョンのコンテンツを提供する新しいリリースを作成します。リリース履歴テーブルでは、両方のリリースが同じバージョン ID をリストします。
ロールバックする方法は次のとおりです。
Firebase コンソールのサイトの [リリース履歴] テーブルで、ロールバックする以前のリリース エントリにカーソルを合わせます。
リリースを手動で削除する
プロジェクトのホスティング ストレージを解放するために、ライブ チャンネルからリリースを手動で削除する必要がある場合があります。ライブ サイトで現在提供されているリリースではなく、以前のリリースのみを削除できます。
リリースを削除すると、実際にはそのコンテンツが削除され、24 時間以内に削除される予定です。リリース オブジェクト自体は保持されるため、そのメタデータ (誰がいつデプロイしたか) を引き続き確認できます。
リリースを削除する方法は次のとおりです。
Firebase コンソールのサイトの [リリース履歴] テーブルで、削除する以前のリリース エントリにカーソルを合わせます。
プレビュー チャンネルを手動で削除する
プレビュー チャンネルは削除できますが、サイトのライブ チャンネルは削除できません。
プレビュー チャネルを削除すると、そのチャネルとそのリリースおよび関連するバージョンが 24 時間以内に削除されるようにスケジュールされます。関連するプレビュー URL も無効になります。バージョン削除の例外は、バージョンが別のリリースに関連付けられている場合です (これは、たとえば、同じサイト内のあるチャネルから別のチャネルにバージョンを複製した場合に発生します)。
Hosting では、プレビュー チャネルを削除する 2 つの異なる方法がサポートされています。
Firebase コンソール
プレビュー チャネルの行で、 をクリックし、 [チャネルの削除]を選択します。削除を確認します。Firebase CLI
任意のディレクトリから次のコマンドを実行します。firebase hosting:channel:delete CHANNEL_ID
プレビュー チャネルとクローン作成のための CLI コマンド
プレビュー チャネルのコマンド
複数のホスティング サイトがある場合、プレビュー チャネルのすべてのコマンドは展開ターゲットをサポートします。
指示 | 説明 |
---|---|
firebase hosting:channel:create CHANNEL_ID | 指定された このコマンドはチャネルにデプロイされません。 |
firebase hosting:channel:delete CHANNEL_ID | 指定されたプレビュー チャンネルを削除します サイトのライブ チャンネルは削除できません。 |
firebase hosting:channel:deploy CHANNEL_ID | Hosting のコンテンツと構成を指定されたプレビュー チャネルにデプロイします プレビュー チャネルがまだ存在しない場合、このコマンドは、チャネルにデプロイする前に既定のホスティング サイトにチャネルを作成します。 |
firebase hosting:channel:list | デフォルトのホスティング サイトのすべてのチャンネル (「ライブ」チャンネルを含む) を一覧表示します。 |
firebase hosting:channel:open CHANNEL_ID | 指定されたチャンネルの URL をブラウザーで開くか、ブラウザーで開くことができない場合は URL を返します。 |
バージョン複製のコマンド
指示 | 説明 |
---|---|
firebase hosting:clone \ | 指定された「ソース」チャネルに最近デプロイされたバージョンを、指定された「ターゲット」チャネルに複製します このコマンドは、指定された「ターゲット」チャネルにもデプロイされます。 「ターゲット」チャネルがまだ存在しない場合、このコマンドは、チャネルに展開する前に、「ターゲット」ホスティング サイトに新しいプレビュー チャネルを作成します。 |
firebase hosting:clone \ | 指定されたバージョンを指定された「ターゲット」チャネルに複製します このコマンドは、指定された「ターゲット」チャネルにもデプロイされます。 「ターゲット」チャネルがまだ存在しない場合、このコマンドは、チャネルに展開する前に、「ターゲット」ホスティング サイトに新しいプレビュー チャネルを作成します。 |