Déployer des cibles

Les cibles de déploiement sont des identifiants de nom court (que vous définissez vous-même) pour les ressources Firebase de votre projet Firebase, comme un site d'hébergement avec des actifs statiques uniques ou un groupe d'instances de base de données en temps réel qui partagent les mêmes règles de sécurité.

Les cibles de déploiement sont utiles lorsque vous disposez de plusieurs sites d'hébergement , de plusieurs buckets Cloud Storage ou de plusieurs instances de base de données en temps réel . Avec les cibles de déploiement, la CLI Firebase peut déployer des paramètres sur une ressource Firebase spécifique ou un groupe de ressources de votre projet, tels que :

  • La configuration d'hébergement pour chacun de vos sites d'hébergement
  • Actifs statiques de votre répertoire de projet pour chacun de vos sites d'hébergement
  • Règles de sécurité partagées par plusieurs instances de base de données en temps réel ou plusieurs buckets Cloud Storage

Pour configurer une cible de déploiement :

  1. Appliquez un TARGET_NAME à la ressource Firebase ciblée ou au groupe de ressources Firebase.
  2. Dans votre fichier firebase.json , référencez le TARGET_NAME associé lorsque vous configurez les paramètres de chaque ressource ou groupe de ressources.

Lorsque vous exécutez des commandes Firebase CLI (telles que firebase deploy ), la CLI Firebase associe chaque TARGET_NAME à ses ressources Firebase associées. La CLI communique ensuite à votre projet Firebase les paramètres de chaque ressource.

Configurer des cibles de déploiement pour vos ressources Firebase

À l'aide de la CLI Firebase, appliquez un TARGET_NAME (identifiant de nom court que vous définissez vous-même) à une ressource Firebase ou à un groupe de ressources Firebase. Firebase prend en charge le déploiement de cibles pour :

Les paramètres des cibles de déploiement sont stockés dans le fichier .firebaserc dans le répertoire de votre projet, vous n'avez donc besoin de configurer les cibles de déploiement qu'une seule fois par projet.

Configurer des cibles de déploiement pour l'hébergement

Pour créer une cible de déploiement et appliquer un TARGET_NAME à un site d'hébergement, exécutez la commande CLI suivante :

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Où sont les paramètres :

  • TYPE - le type de ressource Firebase pertinent

    • Pour les sites d'hébergement Firebase, utilisez hosting .
  • TARGET_NAME — un nom unique pour le site d'hébergement sur lequel vous déployez

  • RESOURCE_IDENTIFIER - le SITE_ID du site d'hébergement tel que répertorié dans votre projet Firebase

Par exemple, si vous avez créé deux sites ( myapp-blog et myapp-app ) dans votre projet Firebase, vous pouvez appliquer un TARGET_NAME unique ( blog et app , respectivement) à chaque site en exécutant les commandes suivantes :

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Configurer des cibles de déploiement pour Cloud Storage ou Realtime Database

Pour créer une cible de déploiement et appliquer un TARGET_NAME à un ensemble de ressources Cloud Storage ou Realtime Database, exécutez la commande CLI suivante :

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Où sont les paramètres :

  • TYPE - le type de ressource Firebase pertinent

    • Pour les buckets Cloud Storage, utilisez storage .
    • Pour les instances de base de données en temps réel, utilisez database .
  • TARGET_NAME — un nom unique pour la ressource ou le groupe de ressources qui partagent des règles de sécurité

  • RESOURCE_IDENTIFIER : les identifiants des ressources répertoriées dans votre projet Firebase (comme les noms de compartiment de stockage ou les ID d'instance de base de données) qui partagent tous les mêmes règles de sécurité.

Par exemple, vous pouvez appliquer le TARGET_NAME de main à un groupe de trois buckets Cloud Storage régionaux (qui partagent tous les mêmes règles de sécurité) en exécutant la commande suivante :

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

Notez que myproject.appspot.com est l'identifiant du bucket par défaut, tandis que myproject-eu et myproject-ja sont deux buckets supplémentaires créés dans le projet Firebase.

Configurez votre fichier firebase.json pour utiliser les cibles de déploiement

Après avoir configuré des cibles de déploiement pour vos ressources Firebase, référencez chaque TARGET_NAME appliqué dans votre fichier de configuration firebase.json :

  1. Créez un tableau d'objets de configuration pour chaque TYPE de ressource Firebase ( hosting , storage ou database ).
  2. Dans les tableaux, spécifiez la target (à l'aide de TARGET_NAME ) et définissez vos paramètres pour la ressource ou le groupe de ressources Firebase associé.

En poursuivant les exemples ci-dessus, où votre projet Firebase comporte deux sites d'hébergement et trois buckets Cloud Storage (qui partagent les mêmes règles de sécurité), votre fichier firebase.json ressemblerait à ceci :

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Si vous disposez de plusieurs configurations pour vos ressources, vous pouvez créer plusieurs cibles de déploiement et spécifier chacune d'elles dans le fichier firebase.json . Toutes les ressources associées seront déployées ensemble lorsque vous exécuterez firebase deploy .

Gérer les cibles de déploiement

Les paramètres des cibles de déploiement sont stockés dans le fichier .firebaserc dans le répertoire de votre projet. Vous pouvez gérer les cibles de déploiement de votre projet en exécutant l'une des commandes suivantes à partir de la racine du répertoire de votre projet.

Commande Description
firebase target Répertorie les cibles de déploiement pour votre répertoire de projet actuel
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Supprime une ressource de la cible à laquelle elle a été affectée
firebase target:clear \
TYPE TARGET_NAME
Supprime toutes les ressources ou le site d'hébergement de la cible spécifiée

Les commandes target:remove et target:clear mettent automatiquement à jour les paramètres de la cible de déploiement dans le fichier .firebaserc de votre répertoire de projet.

Testez localement avant de déployer

Exécutez l'une des commandes suivantes à partir de la racine du répertoire de votre projet.

Commande Description
firebase emulators:start Émule toutes les ressources configurées dans le répertoire de votre projet
firebase emulators:start \
--only hosting: TARGET_NAME
Émule uniquement le contenu d'hébergement et la configuration du site d'hébergement spécifié
firebase emulators:start \
--only storage: TARGET_NAME
Émule uniquement le fichier de règles pour la cible Cloud Storage spécifiée
firebase emulators:start \
--only database: TARGET_NAME
Émule uniquement le fichier de règles pour la cible de base de données en temps réel spécifiée

En savoir plus sur la configuration et l'utilisation de Firebase Local Emulator Suite .

Déployer des ressources Firebase spécifiques

Exécutez l'une des commandes suivantes à partir de la racine du répertoire de votre projet.

Commande Description
firebase deploy Crée une version de toutes les ressources déployables dans le répertoire de votre projet
firebase deploy \
--only hosting: TARGET_NAME
Déploie uniquement le contenu d'hébergement et la configuration du site d'hébergement spécifié sur le canal en direct du site.
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Déploie uniquement le contenu d'hébergement et la configuration du site d'hébergement spécifié sur un canal de prévisualisation du site.
firebase deploy \
--only storage: TARGET_NAME
Déploie uniquement le fichier de règles pour la cible Cloud Storage spécifiée
firebase deploy \
--only database: TARGET_NAME
Déploie uniquement le fichier de règles pour la cible de base de données en temps réel spécifiée