Verwalten Sie Projektkonfigurationen mit dem Erweiterungsmanifest

Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und deren Konfigurationen. Mit dem Manifest können Sie:

  • Teilen Sie Ihre Erweiterungskonfiguration mit anderen
  • Kopieren Sie Ihre Erweiterungskonfiguration zwischen verschiedenen Projekten (z. B. von Ihrem Staging-Projekt in Ihr Produktionsprojekt).
  • Stellen Sie alle Ihre Erweiterungen auf einmal bereit
  • Testen Sie mit der Firebase Local Emulator Suite, wie Ihre Erweiterungen mit Ihrer App funktionieren
  • Übernehmen Sie Ihre Erweiterungskonfiguration in die Quellcodeverwaltung
  • Fügen Sie Erweiterungen in Ihre CI/CD-Pipeline ein

Ein Erweiterungsmanifest besteht aus zwei Teilen:

  • Der extensions Ihrer firebase.json , der eine Zuordnung der Instanz-ID zur Erweiterungsversionsreferenz darstellt. Zum 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. Beispielsweise könnte eine Instanz von storage-resize-images 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

Erstellen Sie ein Erweiterungsmanifest

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

  • Verwalten Sie Ihr Erweiterungsmanifest mit der Firebase-CLI
  • Exportieren Sie die Erweiterungskonfiguration eines Projekts
  • Bearbeiten Sie die Manifestdateien manuell

Die ersten beiden Methoden werden im Folgenden erläutert.

Verwalten Sie Ihr Erweiterungsmanifest mit der Firebase-CLI

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 tatsächlich zu ändern.

Zum Beispiel:

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

Wenn Sie den obigen Befehl 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 sind einige weitere Beispiele für Befehle, die das Erweiterungsmanifest ändern:

# 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

Exportieren Sie die Erweiterungskonfiguration eines Projekts

Gehen Sie wie folgt vor, um die aktuelle Erweiterungskonfiguration eines Projekts im Manifest zu speichern:

  1. Wenn Sie dies noch nicht getan haben, richten Sie die Firebase-CLI ein
  2. Wechseln Sie an einer Shell-Eingabeaufforderung in das Projektverzeichnis. (Ihr Projektverzeichnis enthält die Datei firebase.json ).
  3. Führen Sie den Befehl ext:export aus:
    firebase ext:export

Der Befehl ext:export fügt der Datei firebase.json einen extensions hinzu. Darüber hinaus erstellt der Befehl ext:export ein extensions , das eine .env Datei für jede von Ihnen installierte Erweiterungsinstanz enthält. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.

Testen Sie eine Erweiterungskonfiguration mit der Firebase Local Emulator Suite

Sobald Sie einige Erweiterungsinstanzen zu Ihrem Erweiterungsmanifest 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 :

    • Um die Emulator Suite interaktiv auszuführen, führen Sie Folgendes aus: firebase emulators:start
    • Um die Emulator Suite auszuführen und ein Testskript auszuführen, führen Sie Folgendes aus: firebase emulators:exec my-test.sh

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

Stellen Sie eine Erweiterungskonfiguration für ein Projekt bereit

Sobald Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie es mithilfe der Firebase-CLI in einem Projekt bereitstellen. Wenn Sie mit einem Erweiterungsmanifest bereitstellen, installieren, aktualisieren und konfigurieren Sie alle Erweiterungsinstanzen im Manifest auf einmal in einem Projekt.

So stellen Sie ein Erweiterungsmanifest bereit:

  1. Wechseln Sie an 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 deploy aus. Wenn Sie die Erweiterungen für ein anderes Projekt als das aktuelle bereitstellen möchten, geben Sie auch --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID
    an

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 Ihre Erweiterungsinstanzen bereit.

Projektspezifische Erweiterungskonfigurationen

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

  • Fügen Sie Parameterwerte, die sich zwischen Projekten unterscheiden, in extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • Fügen Sie gemeinsam genutzte Parameterwerte in extensions/ EXTENSION_INSTANCE_ID .env .

Manchmal möchten Sie beim Emulieren Ihrer Erweiterungen möglicherweise einen anderen Parameterwert verwenden: Beispielsweise möchten Sie möglicherweise einen Test-API-Schlüssel anstelle eines Produktions-API-Schlüssels bereitstellen. Fügen Sie diese Parameter in eine .local Datei ein:

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