Projektkonfigurationen mit dem Erweiterungsmanifest verwalten

Ein Erweiterungsmanifest ist eine Liste mit Erweiterungsinstanzen und ihren Konfigurationen. Mit dem Manifest können Sie Folgendes tun:

  • Erweiterungskonfiguration mit anderen teilen
  • Konfigurationen von Erweiterungen zwischen verschiedenen Projekten kopieren (z. B. aus dem Staging-Projekt in das Produktionsprojekt)
  • Alle Erweiterungen gleichzeitig bereitstellen
  • Mit dem Firebase Local Emulator Suite testen, wie die Erweiterungen mit Ihrer App funktionieren
  • Konfiguration der Erweiterungen in die Versionsverwaltung aufnehmen
  • Erweiterungen in Ihre CI/CD-Pipeline einbinden

Ein Erweiterungsmanifest besteht aus zwei Teilen:

  • Der Abschnitt extensions Ihrer firebase.json, eine Zuordnung der Instanz-ID zur Erweiterungsversion. Beispiel:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env-Dateien mit der Konfiguration für jede Ihrer Erweiterungsinstanzen im Unterverzeichnis extensions/ des Firebase-Projektverzeichnisses. Eine Instanz der storage-resize-images könnte beispielsweise eine .env-Datei wie die folgende haben:

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

Erweiterungsmanifest erstellen

Es gibt drei Möglichkeiten, ein Manifest für Erweiterungen zu erstellen:

  • Manifest der Erweiterungen mit der Firebase CLI verwalten
  • Erweiterungskonfiguration eines Projekts exportieren
  • Manifestdateien manuell bearbeiten

Die ersten beiden Methoden werden unten erläutert.

Manifest der Erweiterungen mit der Firebase CLI verwalten

Sie können die meisten ext:-Befehle der Firebase CLI mit der Option --local ausführen, um das Manifest der Erweiterungen zu aktualisieren, ohne die aktuelle Konfiguration des Projekts zu ändern.

Beispiel:

firebase ext:install --local firebase/firestore-bigquery-export

Wenn Sie den Befehl oben ausführen, werden Sie aufgefordert, die neueste Version der firebase/firestore-bigquery-export-Erweiterung zu konfigurieren und die Konfiguration im Manifest zu speichern. Die Konfiguration wird jedoch nicht in Ihrem Projekt bereitgestellt.

Hier einige weitere Beispiele für Befehle, mit denen das Manifest der Erweiterungen geändert wird:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

Erweiterungskonfiguration eines Projekts exportieren

So speichern Sie die aktuelle Erweiterungskonfiguration eines Projekts im Manifest:

  1. Richten Sie die Firebase CLI ein, falls noch nicht geschehen.
  2. Wechseln Sie über eine Shell-Eingabeaufforderung zum Projektverzeichnis. Ihr Projektverzeichnis enthält die Datei firebase.json.
  3. Führen Sie den Befehl ext:export aus:
    firebase ext:export

Mit dem Befehl ext:export wird der Datei firebase.json der Abschnitt extensions hinzugefügt. Außerdem wird mit dem Befehl ext:export für jede installierte Erweiterungs-Instanz ein extensions-Verzeichnis mit einer .env-Datei erstellt. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.

Erweiterungskonfiguration mit der Firebase Local Emulator Suite testen

Nachdem Sie Ihrem Manifest für Erweiterungen einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mit der Local Emulator Suite testen.

  1. Installieren und konfigurieren Sie Local Emulator Suite.

  2. Starten Sie Local Emulator Suite:

    • Wenn Sie die Emulator Suite interaktiv ausführen möchten, führen Sie Folgendes aus: firebase emulators:start
    • Führen Sie den folgenden Befehl aus, um die Emulator Suite und ein Testscript auszuführen: firebase emulators:exec my-test.sh

Wenn Sie in Ihrem Manifest Erweiterungsinstanzen aufgeführt haben, lädt Local Emulator Suite den Quellcode dieser Erweiterungen auf ~/.cache/firebase/extensions herunter. Sobald sie heruntergeladen wurden, wird die Local Emulator Suite gestartet. Sie können dann eine der im Hintergrund ausgelösten Funktionen der Erweiterungen auslösen und Ihre App mit der Emulator-Suite verbinden, um die Integration mit Ihrer App zu testen.

Erweiterungskonfiguration in einem Projekt bereitstellen

Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie über die Firebase CLI in einem Projekt bereitstellen. Bei der Bereitstellung mit einem Erweiterungsmanifest werden alle Erweiterungsinstanzen im Manifest gleichzeitig installiert, aktualisiert und in einem Projekt konfiguriert.

So stellen Sie ein Manifest für Erweiterungen bereit:

  1. Wechseln Sie in einer Shell-Eingabeaufforderung in das Verzeichnis, das die gespeicherte Erweiterungskonfiguration enthält. Dies ist das Verzeichnis, das firebase.json enthält. Wenn Sie gerade ext:export ausgeführt haben, befinden Sie sich bereits im richtigen Verzeichnis.)
  2. Führen Sie den Befehl deploy aus: Wenn Sie die Erweiterungen in einem anderen Projekt als dem aktuellen bereitstellen möchten, geben Sie auch --project= an:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Der Befehl deploy validiert jede Instanzkonfiguration, fragt Sie, ob Sie Erweiterungsinstanzen aus Ihrem Zielprojekt löschen möchten, die nicht in firebase.json aufgeführt sind, und stellt dann alle Erweiterungsinstanzen bereit.

Projektspezifische Erweiterungskonfigurationen

Gespeicherte Erweiterungskonfigurationen können für die Bereitstellung in mehreren verschiedenen Projekten verwendet werden, z. B. in einem Staging- und einem Produktionsprojekt. Dabei müssen einige Parameterwerte für jedes Projekt möglicherweise unterschiedlich sein. Projektspezifische .env-Dateien ermöglichen Folgendes:

  • Geben Sie Parameterwerte, die sich zwischen Projekten unterscheiden, in extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID ein.
  • Geben Sie die freigegebenen Parameterwerte in extensions/EXTENSION_INSTANCE_ID.env ein.

Manchmal möchten Sie beim Emulieren Ihrer Erweiterungen einen anderen Parameterwert verwenden. Sie können beispielsweise einen Test-API-Schlüssel anstelle eines Produktionsschlüssels angeben. Fügen Sie diese Parameter in eine .local-Datei ein:

  • Geben Sie nicht geheime Parameter, die Sie während der Emulation verwenden möchten, in extensions/EXTENSION_INSTANCE_ID.env.local ein.
  • Werte für geheime Parameter in extensions/EXTENSION_INSTANCE_ID.secret.local einfügen