Utilizza l'emulatore Data Connect per CI/CD

Firebase Data Connect fornisce un emulatore locale per la prototipazione end-to-end, nonché per i flussi di integrazione e deployment continui (CI/CD):

  • L'emulatore Data Connect interagisce con un'istanza del database PGLite integrata locale per consentirti di creare prototipi di query e mutazioni e testare il codice client in un ambiente completamente locale.
  • L'emulatore Data Connect può essere utilizzato anche per il lavoro non interattivo. Ti consente di eseguire test automatici ed è adatto per l'utilizzo con i flussi di lavoro CI/CD. Questo è utile quando gli schemi sono stabili e vuoi creare un prototipo e testare il codice lato client.

Questa guida illustra l'installazione e l'utilizzo dell'emulatore in modo più dettagliato rispetto alla guida rapida.

Installa l'emulatore Data Connect

Prima di installare Local Emulator Suite per utilizzare l'emulatore Data Connect, devi disporre di:

  • Node.js versione 18.0 o successive.

Installa l'interfaccia a riga di comando Firebase e configura la directory del progetto

  1. Installa l'interfaccia a riga di comando Firebase seguendo la guida all'installazione. Assicurati di aggiornarlo regolarmente, poiché l'emulatore Data Connect è in fase di sviluppo attivo con correzioni di bug e nuove funzionalità.

  2. Se non l'hai già fatto, inizializza la directory di lavoro corrente come progetto Firebase, seguendo le istruzioni per specificare i prodotti da utilizzare:

    firebase init

Impostare o modificare la configurazione di Local Emulator Suite

Se hai avviato l'emulatore Data Connect dall'estensione Firebase per VS Code, se necessario è stato installato per te.

Puoi utilizzare l'interfaccia a riga di comando Firebase per installare manualmente l'emulatore insieme ad altri componenti selezionati di Local Emulator Suite. Questo comando avvia una procedura guidata di configurazione che ti consente di selezionare gli emulatori che ti interessano, scaricare i file binari degli emulatori corrispondenti e impostare le porte degli emulatori se quelle predefinite non sono appropriate.

  firebase init emulators

Una volta installato un emulatore, non vengono eseguiti controlli di aggiornamento e non verranno eseguiti ulteriori download automatici finché non aggiornerai la versione della CLI Firebase.

Scegli un progetto Firebase

Nel flusso di configurazione, l'interfaccia a riga di comando di Firebase ti chiede di scegliere o creare un progetto Firebase. Se scegli un progetto esistente che hai configurato con Data Connect nella console Firebase, verrà suggerita la configurazione che hai scelto.

Configurare l'emulatore

Configurare l'emulatore

L'esecuzione del flusso firebase init ti guiderà attraverso le opzioni di configurazione dell'emulatore. Come per gli altri emulatori in Local Emulator Suite, i parametri di configurazione vengono memorizzati nei file di progetto locali.

  • Il file firebase.json contiene le assegnazioni delle porte dell'emulatore.
    • La chiave emulators:ui non si applica all'emulatore Data Connect.

Utilizzare le risorse Data Connect locali e di produzione

Se vuoi assicurarti di non influire sulle risorse di produzione, imposta un demo- projectID o assicurati che il codice client sia strumentato per connettersi all'emulatore, come descritto in una sezione successiva.

Avvia l'emulatore

Se esegui l'emulatore in modo non interattivo, ad esempio per i flussi di lavoro CI/CD, avvialo con l'opzione exec.

firebase emulators:exec ./path/to/test-script.sh

Se stai integrando query e mutazioni predefinite nel codice client e utilizzi l'emulatore specificamente per testare i client, puoi utilizzare l'opzione start per il lavoro interattivo. Puoi anche avviare l'emulatore dall'estensione VS Code.

firebase emulators:start

Fornisci strumenti al codice client per comunicare con l'emulatore

Configura la configurazione in-app o le classi di test per interagire con l'emulatore Data Connect come segue.

JavaScript
import { initializeApp } from "firebase/app";
import { connectorConfig } from "@name-of-package";
import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect';

// TODO: Replace the following with your app's Firebase project configuration
const firebaseConfig = {
  //...
};

const app = initializeApp(firebaseConfig);

const dataConnect = getDataConnect(app, connectorConfig);
connectDataConnectEmulator(dataConnect, "localhost", 9399);

// Make calls from your app
  
Kotlin Android
val connector = MoviesConnector.instance

// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()

// (Alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)

// Make calls from your app
  
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig)

// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)

// Make calls from your app
  

Utilizzare l'emulatore per i test e l'integrazione continua

Esegui immagini Local Emulator Suite containerizzate

L'installazione e la configurazione di Local Emulator Suite con i contenitori in una configurazione CI tipica sono semplici.

Esistono alcuni problemi da tenere presente:

  • I file binari dell'emulatore vengono installati e memorizzati nella cache in ~/.cache/firebase/emulators/. Ti consigliamo di aggiungere questo percorso alla configurazione della cache CI per evitare download ripetuti.
  • Se non hai un file firebase.json nel tuo repository, devi aggiungere un argomento della riga di comando al comando emulators:start o emulators:exec per specificare quali emulatori devono essere avviati. Ad esempio, --only dataconnect.

Svuotare il database tra un test e l'altro

Per reimpostare gli ambienti di test tra una corsa e l'altra, Firebase consiglia:

  • Scrittura di mutazioni dedicate per gestire quanto segue:
    • Durante la configurazione, compila un'istanza di database locale con i dati iniziali.
    • Durante il teardown, elimina i dati modificati dall'istanza del database post-test.

Differenze tra l'emulatore Data Connect e la produzione

L'emulatore Data Connect simula molte funzionalità del prodotto lato server. Tuttavia, esistono alcune eccezioni da tenere presenti:

  • La versione e la configurazione dettagliata di PGLite potrebbero essere diverse dalla versione della tua istanza Cloud SQL di produzione.
  • Se utilizzi l'emulatore per sviluppare con l'integrazione di pgvector e dell'API Vertex di Data Connect, le chiamate all'API Cloud Vertex vengono effettuate direttamente anziché tramite l'integrazione di Vertex di Cloud SQL. Tuttavia, le chiamate all'API di produzione vengono comunque effettuate, il che significa che devi utilizzare un progetto Firebase reale, non puoi utilizzare un progetto demo- e dovrai sostenere i costi dell'API Vertex.