Projektkonfigurationen mit dem Erweiterungsmanifest verwalten

Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen. Mit dem Manifest haben Sie folgende Möglichkeiten:

  • Erweiterungskonfiguration mit anderen teilen
  • Erweiterungskonfiguration zwischen verschiedenen Projekten kopieren (z. B. von Ihrem Staging-Projekt zu Ihrem Produktionsprojekt)
  • Alle Erweiterungen gleichzeitig bereitstellen
  • Mit der Firebase Local Emulator Suite testen, wie Ihre Erweiterungen mit Ihrer App funktionieren
  • Erweiterungskonfiguration in der Versionsverwaltung festschreiben
  • Erweiterungen in Ihre CI/CD-Pipeline einbeziehen

Ein Erweiterungsmanifest besteht aus zwei Teilen:

  • Der Abschnitt extensions Ihrer firebase.json-Datei, eine Zuordnung von Instanz-ID zu Erweiterungsversionsreferenz. 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/ Ihres Firebase-Projektverzeichnisses. Eine Instanz von storage-resize-images könnte beispielsweise eine .env-Datei wie die folgende haben:

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

Erweiterungsmanifest erstellen

Es gibt drei Möglichkeiten, ein Erweiterungsmanifest zu erstellen:

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

Die ersten beiden Methoden werden unten erläutert.

Erweiterungsmanifest mit der Firebase CLI verwalten

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

Beispiel:

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

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

Hier sind einige weitere Beispiele für Befehle, mit denen das Erweiterungsmanifest 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 die Shell 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 ein Abschnitt extensions hinzugefügt. Außerdem wird mit dem Befehl ext:export ein Verzeichnis extensions erstellt, das eine .env-Datei für jede installierte Erweiterungsinstanz enthält. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.

Erweiterungskonfiguration mit der Firebase Local Emulator Suite testen

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

  1. Installieren und konfigurieren Sie die Local Emulator Suite.

  2. Starten Sie die Local Emulator Suite:

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

Wenn in Ihrem Manifest Erweiterungsinstanzen aufgeführt sind, lädt die Local Emulator Suite den Quellcode dieser Erweiterungen in ~/.cache/firebase/extensions herunter. Sobald die Erweiterungen heruntergeladen wurden, wird die Local Emulator Suite gestartet und Sie können alle durch Hintergrundereignisse 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 es mit der Firebase CLI in einem Projekt bereitstellen. Wenn Sie mit einem Erweiterungsmanifest bereitstellen, installieren, aktualisieren und konfigurieren Sie alle Erweiterungsinstanzen im Manifest gleichzeitig in einem Projekt.

So stellen Sie ein Erweiterungsmanifest bereit:

  1. Wechseln Sie über die Shell zu dem Verzeichnis, das die gespeicherte Erweiterungskonfiguration enthält. Dieses Verzeichnis enthält die Datei firebase.json. 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

Mit dem Befehl deploy wird die Konfiguration jeder Instanz validiert. Sie werden gefragt, ob Sie Erweiterungsinstanzen aus Ihrem Zielprojekt löschen möchten, die nicht in firebase.json aufgeführt sind. Anschließend werden alle Erweiterungsinstanzen bereitgestellt.

Projektspezifische Erweiterungskonfigurationen

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

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

Manchmal möchten Sie möglicherweise einen anderen Parameterwert verwenden, wenn Sie Ihre Erweiterungen emulieren. Beispielsweise möchten Sie vielleicht einen Test-API-Schlüssel anstelle eines Produktions-API-Schlüssels angeben. Geben Sie diese Parameter in einer .local-Datei an:

  • Geben Sie nicht geheime Parameter, die Sie während der Emulation verwenden möchten, in extensions/EXTENSION_INSTANCE_ID.env.local an.
  • Geben Sie geheime Parameterwerte in extensions/EXTENSION_INSTANCE_ID.secret.local an.