Target di deployment

Le destinazioni di deployment sono identificatori brevi (che definisci personalmente) per le risorse Firebase nel tuo progetto Firebase, ad esempio un sito Hosting con asset statici univoci o un gruppo di istanze di Realtime Database che condividono le stesse regole di sicurezza.

Le destinazioni di deployment sono utili quando hai più siti Hosting, più bucket Cloud Storage o più istanze di Realtime Database. Con le destinazioni di deployment, l'interfaccia a riga di comando di Firebase può eseguire il deployment delle impostazioni in una risorsa o in un gruppo di risorse Firebase specifico nel progetto, ad esempio:

  • La configurazione di hosting per ciascuno dei tuoi siti Hosting.
  • Asset statici dalla directory del progetto per ciascuno dei tuoi siti Hosting
  • Regole di sicurezza condivise da più istanze di Realtime Database o più bucket Cloud Storage

Per configurare una destinazione del deployment:

  1. Applica un TARGET_NAME alla risorsa Firebase o al gruppo di risorse Firebase target.
  2. Nel file firebase.json, fai riferimento al TARGET_NAME associato quando configuri le impostazioni per ogni risorsa o gruppo di risorse.

Quando esegui comandi dell'interfaccia a riga di comando di Firebase (come firebase deploy), l'interfaccia a riga di comando di Firebase accoppia ogni TARGET_NAME alle risorse Firebase associate. L'interfaccia a riga di comando comunica quindi al tuo progetto Firebase le impostazioni per ogni risorsa.

Configura le destinazioni di deployment per le risorse Firebase

Utilizzando l'interfaccia a riga di comando di Firebase, applica un TARGET_NAME (identificatore con nome breve creato da te) a una risorsa Firebase o a un gruppo di risorse Firebase. Firebase supporta le destinazioni di deployment per:

Le impostazioni delle destinazioni di deployment sono archiviate nel file .firebaserc nella directory del progetto, quindi devi configurare le destinazioni di deployment solo una volta per progetto.

Configura destinazioni di deployment per Hosting

Per creare una destinazione per il deployment e applicare TARGET_NAME a un sito di Hosting, esegui questo comando dell'interfaccia a riga di comando:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Dove si trovano i parametri:

  • TYPE: il tipo di risorsa Firebase pertinente

    • Per i siti di Firebase Hosting, utilizza hosting.
  • TARGET_NAME: un nome univoco per il sito Hosting in cui stai eseguendo il deployment

  • RESOURCE_IDENTIFIER: SITE_ID per il sito di Hosting come elencato nel tuo progetto Firebase

Ad esempio, se hai creato due siti (myapp-blog e myapp-app) nel progetto Firebase, puoi applicare un TARGET_NAME univoco (rispettivamente blog e app) a ogni sito eseguendo i seguenti comandi:

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

Configura le destinazioni di deployment per Cloud Storage o Realtime Database

Per creare una destinazione per il deployment e applicare TARGET_NAME a un set di risorse Cloud Storage o Realtime Database, esegui questo comando dell'interfaccia a riga di comando:

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

Dove si trovano i parametri:

  • TYPE: il tipo di risorsa Firebase pertinente

    • Per i bucket Cloud Storage, utilizza storage.
    • Per le istanze di Realtime Database, utilizza database.
  • TARGET_NAME: un nome univoco della risorsa o del gruppo di risorse che condividono le regole di sicurezza

  • RESOURCE_IDENTIFIER: gli identificatori delle risorse elencate nel progetto Firebase (ad esempio nomi dei bucket di archiviazione o ID istanza di database) che condividono tutte le stesse regole di sicurezza

Ad esempio, puoi applicare TARGET_NAME di main a un gruppo di tre bucket Cloud Storage regionali (che condividono tutti le stesse regole di sicurezza) eseguendo questo comando:

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

Tieni presente che myproject.appspot.com è l'identificatore del bucket predefinito, mentre myproject-eu e myproject-ja sono due bucket aggiuntivi creati nel progetto Firebase.

Configura il file firebase.json per utilizzare le destinazioni di deployment

Dopo aver impostato le destinazioni di deployment per le risorse Firebase, fai riferimento a ogni TARGET_NAME applicata nel file di configurazione di firebase.json:

  1. Crea un array di oggetti di configurazione per ciascuna risorsa Firebase TYPE (hosting, storage o database).
  2. Negli array, specifica target (utilizzando TARGET_NAME) e definisci le impostazioni per la risorsa o il gruppo di risorse Firebase associato.

Proseguendo con gli esempi precedenti, in cui il progetto Firebase ha due siti di hosting e tre bucket Cloud Storage (che condividono le stesse regole di sicurezza), il file firebase.json avrà il seguente aspetto:

{
  "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
    }
  ]
}

Se disponi di più configurazioni per le risorse, puoi creare più destinazioni di deployment e specificarne una nel file firebase.json. Il deployment di tutte le risorse associate verrà eseguito insieme quando esegui firebase deploy.

Gestisci destinazioni del deployment

Le impostazioni delle destinazioni di deployment sono archiviate nel file .firebaserc nella directory del progetto. Puoi gestire le destinazioni di deployment del progetto eseguendo uno dei comandi seguenti dalla directory radice della directory del progetto.

Comando Descrizione
firebase target Elenca le destinazioni di deployment per la directory del progetto attuale
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Rimuove una risorsa dalla destinazione a cui è stata assegnata
firebase target:clear \
TYPE TARGET_NAME
Rimuove tutte le risorse o il sito Hosting dalla destinazione specificata

I comandi target:remove e target:clear aggiornano automaticamente le impostazioni della destinazione del deployment nel file .firebaserc nella directory del progetto.

Esegui i test in locale prima di eseguire il deployment

Esegui uno dei comandi seguenti dalla directory principale della directory del progetto.

Comando Descrizione
firebase emulators:start Emula tutte le risorse configurate nella directory del progetto
firebase emulators:start \
--only hosting:TARGET_NAME
Emula solo i contenuti e la configurazione di Hosting del sito Hosting specificato.
firebase emulators:start \
--only storage:TARGET_NAME
Emula solo il file delle regole per la destinazione Cloud Storage specificata
firebase emulators:start \
--only database:TARGET_NAME
Emula solo il file delle regole per la destinazione specificata di Realtime Database

Scopri di più sulla configurazione e l'utilizzo di Firebase Local Emulator Suite.

Esegui il deployment di risorse Firebase specifiche

Esegui uno dei comandi seguenti dalla directory principale della directory del progetto.

Comando Descrizione
firebase deploy Crea una release di tutte le risorse di cui è possibile eseguire il deployment nella directory del progetto
firebase deploy \
--only hosting:TARGET_NAME
Esegue il deployment solo dei contenuti e della configurazione di Hosting del sito Hosting specificato sul canale live per il sito
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Esegue il deployment solo dei contenuti e della configurazione di Hosting del sito Hosting specificato su un canale di anteprima per il sito
firebase deploy \
--only storage:TARGET_NAME
Esegue il deployment solo del file delle regole per la destinazione Cloud Storage specificata
firebase deploy \
--only database:TARGET_NAME
Esegue il deployment solo del file delle regole per la destinazione di Realtime Database specificata