プロジェクトの拡張機能の構成を再利用する

Firebase プロジェクトに拡張機能をインストールして構成した後、その構成を保存して別のプロジェクトにデプロイできます。保存した構成には、各インスタンスのバージョンやインストール時に指定したパラメータ値など、インストールされているすべての拡張機能インスタンスの情報が含まれています。

この機能には次のような用途があります。

  • 他のプロジェクトでプロジェクトの拡張機能の構成を再作成する
  • 拡張機能の構成を他のユーザーと共有する
  • 拡張機能の構成をソース管理に commit する
  • CI / CD パイプラインに拡張機能を追加する

プロジェクトの拡張機能の構成を保存する

プロジェクトの拡張機能の構成を保存するには、次の操作を行います。

  1. まだ設定していない場合は、Firebase CLI を設定します
  2. シェル プロンプトでプロジェクト ディレクトリに移動します(プロジェクト ディレクトリには firebase.json ファイルが含まれています)。
  3. ext:export コマンドを実行します。
    firebase ext:export –-project=YOUR_PROJECT_ID

ext:export コマンドを実行すると、firebase.json ファイルに extensions セクションが追加されます。次に例を示します。

{
 "extensions": {
   "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
   "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
 }
}

また、ext:export コマンドを実行すると、extensions ディレクトリが作成され、インストールされているそれぞれの拡張機能インスタンスの .env ファイルが格納されます。これらのファイルには、各インスタンスの構成パラメータが含まれています。たとえば、storage-resize-images のインスタンスの .env ファイルは次のようになります。

IMAGE_TYPE=jpeg
LOCATION=us-central1
IMG_BUCKET=${param:PROJECT_ID}.appspot.com
IMG_SIZES=100x100
DELETE_ORIGINAL_FILE=false

拡張機能の構成をプロジェクトにデプロイする

プロジェクトの拡張機能の構成を保存したら、Firebase CLI を使用してプロジェクトにデプロイできます。拡張機能の構成をデプロイすると、保存した構成内のすべての拡張機能インスタンスを一括でプロジェクトにインストール、更新、構成できます。

拡張機能の構成をデプロイするには:

  1. シェル プロンプトで、保存済みの拡張機能の構成を含むディレクトリに移動します(これは firebase.json を含むディレクトリです。ext:export を実行したばかりの場合は、すでに目的のディレクトリにいます)。
  2. deploy コマンドを実行して、拡張機能をデプロイするプロジェクトを指定します。
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

deploy コマンドを実行すると、各インスタンスの構成が検証され、firebase.json にリストされていない拡張機能インスタンスを宛先プロジェクトから削除するかどうかが尋ねられます。その後、すべての拡張機能インスタンスがデプロイされます。

プロジェクト固有の拡張機能の構成

保存した拡張機能の構成を使用すると、複数の異なるプロジェクト(ステージング用プロジェクトや本番環境プロジェクトなど)をデプロイできます。これを行う場合は、一部のパラメータ値を、プロジェクトごとに異なる値にする必要が生じることがあります。プロジェクト固有の .env ファイルを使用すれば、それが可能です。プロジェクト間で異なるパラメータ値は extensions/${extensionInstanceId}.env.${projectIdOrAlias} に配置し、共有のパラメータ値は extensions/${extensionInstanceId}.env に配置します。