Verwalten Sie Projektkonfigurationen mit dem Extensions-Manifest

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 zu Ihrem 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 ist. 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, die die Konfiguration für jede Ihrer Erweiterungsinstanzen enthalten, 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 , 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 Erweiterung firebase/firestore-bigquery-export “ zu konfigurieren und die Konfiguration im Manifest zu speichern, die Konfiguration wird jedoch nicht für Ihr 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. Richten Sie die Firebase-Befehlszeilenschnittstelle ein , falls Sie dies noch nicht getan haben
  2. Wechseln Sie von einer Shell-Eingabeaufforderung in das Projektverzeichnis. (Ihr Projektverzeichnis enthält die Datei firebase.json ).
  3. Führen Sie den ext:export -Befehl 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

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 :

    • 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 Sie nun Erweiterungsinstanzen in Ihrem Manifest aufgelistet haben, 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 ihre Integration mit Ihrer App zu testen.

Stellen Sie eine Erweiterungskonfiguration für ein Projekt bereit

Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mithilfe der Firebase-Befehlszeilenschnittstelle 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 haben, befinden Sie sich bereits im richtigen Verzeichnis.)
  2. Führen Sie den deploy aus. Wenn Sie die Erweiterungen in einem anderen als dem aktuellen Projekt bereitstellen möchten, geben Sie auch --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID
    an

Der Befehl deploy validiert jede Instanzkonfiguration, fragt, 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 in 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
  • Geben 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 Produktionsschlüssels bereitstellen. Setzen Sie diese Parameter in eine .local -Datei:

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