Gérer les configurations de projet avec le fichier manifeste des extensions

Un fichier manifeste d'extension est une liste d'instances d'extension et leurs de configuration. Avec le fichier manifeste, vous pouvez:

  • Partager la configuration de vos extensions
  • Copier la configuration de vos extensions entre différents projets (par exemple, de votre projet de préproduction à votre projet de production)
  • Déployez toutes vos extensions en même temps
  • Testez le fonctionnement des extensions avec votre application à l'aide de l'Firebase Local Emulator Suite
  • Valider la configuration de vos extensions dans le contrôle du code source
  • Inclure des extensions dans votre pipeline CI/CD

Un fichier manifeste d'extension se compose de deux parties:

  • La section extensions de votre firebase.json, qui est un mappage d'instance ID de la référence de version de l'extension. Exemple :

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • Fichiers .env contenant la configuration de chacune de vos instances d'extension, dans le sous-répertoire extensions/ du répertoire de votre projet Firebase. Par exemple, une instance de storage-resize-images peut avoir Un fichier .env semblable à celui-ci:

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

Créer un fichier manifeste d'extensions

Il existe trois façons de créer un fichier manifeste d'extension :

  • Gérer le fichier manifeste de vos extensions avec la CLI Firebase
  • Exporter la configuration des extensions d'un projet
  • Modifier les fichiers manifestes manuellement

Les deux premières méthodes sont expliquées ci-dessous.

Gérer le fichier manifeste de vos extensions avec la CLI Firebase

Vous pouvez exécuter la plupart des commandes ext: de la CLI Firebase avec l'option --local pour mettre à jour le fichier manifeste des extensions sans modifier la configuration actuelle du projet.

Exemple :

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

L'exécution de la commande ci-dessus vous invite à configurer la dernière version de firebase/firestore-bigquery-export et enregistrer la configuration dans le fichier manifeste, mais il ne déploiera pas la configuration dans votre projet.

Voici d'autres exemples de commandes qui modifient le fichier manifeste des extensions:

# 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

Exporter la configuration des extensions d'un projet

Pour enregistrer la configuration actuelle des extensions d'un projet dans le fichier manifeste, procédez comme suit : suivantes:

  1. Si vous ne l'avez pas déjà fait, configurez la CLI Firebase.
  2. À partir d'une invite de l'interface système, accédez au répertoire du projet. (Votre projet contenant le fichier firebase.json).
  3. Exécutez la commande ext:export :
    firebase ext:export

La commande ext:export ajoute une section extensions au fichier firebase.json. . De plus, la commande ext:export crée un répertoire extensions. contenant un fichier .env pour chaque instance d'extension que vous avez installée. Ces contiennent les paramètres de configuration de chaque instance.

Tester une configuration d'extension avec l'Firebase Local Emulator Suite

Après avoir ajouté des instances d'extension à votre fichier manifeste d'extensions, vous pouvez les tester à l'aide de Local Emulator Suite.

  1. Installez et configurez le Local Emulator Suite.

  2. Démarrez Local Emulator Suite :

    • Pour exécuter la suite d'émulateurs de manière interactive, exécutez la commande suivante : firebase emulators:start
    • Pour exécuter la suite d'émulateurs et un script de test, exécutez la commande suivante: firebase emulators:exec my-test.sh

Si des instances d'extension sont répertoriées dans votre fichier manifeste, Local Emulator Suite téléchargera le code source de ces extensions vers ~/.cache/firebase/extensions Une fois les fichiers téléchargés, Local Emulator Suite va démarrer, et vous pourrez déclencher n'importe lequel des "Extensions" fonctions déclenchées en arrière-plan et connecter votre application à l'émulateur pour tester leur intégration à votre application.

Déployer une configuration d'extensions dans un projet

Après avoir ajouté des instances d'extension au fichier manifeste de votre extension, vous pouvez et la déployer vers un projet à l'aide de la CLI Firebase. Lorsque vous déployez avec un fichier manifeste d'extension, vous installez, mettez à jour et configurez toutes les instances d'extension du fichier manifeste dans un projet en même temps.

Pour déployer un fichier manifeste d'extension :

  1. À partir d'une invite de shell, accédez au répertoire contenant la configuration des extensions enregistrées. (Il s'agit du répertoire contenant firebase.json. Si vous venez d'exécuter ext:export, vous êtes déjà dans la bonne .)
  2. Exécutez la commande deploy. Si vous souhaitez déployer les extensions dans un projet autre que la version actuelle, spécifiez également --project=:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

La commande deploy valide chaque configuration d'instance, vous demande si vous souhaitez supprimer les instances d'extension de votre projet de destination qui ne figurent pas dans firebase.json, puis déploie toutes vos instances d'extension.

Configurations d'extension spécifiques au projet

Les configurations d'extensions enregistrées peuvent être utilisées pour déployer (un projet de préproduction et un projet de production, par exemple). Lorsque vous certaines valeurs de paramètres devront peut-être être différentes pour chaque projet. Cela est possible grâce aux fichiers .env spécifiques au projet:

  • Placez les valeurs de paramètre qui diffèrent entre les projets dans extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID.
  • Placez les valeurs des paramètres partagés dans extensions/EXTENSION_INSTANCE_ID.env.

Il se peut que vous souhaitiez parfois utiliser une valeur de paramètre différente lors de l'émulation de votre extensions: par exemple, vous pouvez fournir une clé API de test au lieu de production 1. Placez ces paramètres dans un fichier .local:

  • Placez les paramètres non secrets que vous souhaitez utiliser pendant l'émulation dans extensions/EXTENSION_INSTANCE_ID.env.local.
  • Placez les valeurs des paramètres de secret extensions/EXTENSION_INSTANCE_ID.secret.local