Data Connect-Emulator für CI/CD verwenden

Firebase Data Connect bietet einen lokalen Emulator für End-to-End-Prototyping sowie CI/CD-Abläufe (Continuous Integration/Continuous Deployment):

  • Der Data Connect-Emulator interagiert mit einer lokal integrierten PGLite-Datenbankinstanz, damit Sie Abfragen und Mutationen prototypisieren und Clientcode in einer vollständig lokalen Umgebung testen können.
  • Der Data Connect-Emulator kann auch für nicht interaktive Aufgaben verwendet werden. Sie können damit automatisierte Tests ausführen und eignen sich zur Verwendung mit CI/CD-Workflows. Das ist nützlich, wenn Ihre Schemas stabil sind und Sie clientseitigen Code prototypisieren und testen möchten.

In diesem Leitfaden werden die Installation und Verwendung des Emulators ausführlicher beschrieben als in der Kurzanleitung.

Data Connect-Emulator installieren

Bevor Sie Local Emulator Suite installieren, um den Data Connect-Emulator zu verwenden, benötigen Sie Folgendes:

  • Node.js-Version 18.0 oder höher

Firebase-CLI installieren und Projektverzeichnis einrichten

  1. Installieren Sie die Firebase CLI. Folgen Sie dazu der Installationsanleitung. Aktualisieren Sie den Data Connect-Emulator regelmäßig, da er sich in aktiver Entwicklung befindet und regelmäßig Fehler korrigiert und neue Funktionen hinzugefügt werden.

  2. Falls noch nicht geschehen, initialisieren Sie das aktuelle Arbeitsverzeichnis als Firebase-Projekt. Folgen Sie der Anleitung, um anzugeben, welche Produkte verwendet werden sollen:

    firebase init

Local Emulator Suite-Konfiguration festlegen oder ändern

Wenn Sie den Data Connect-Emulator über die Firebase-VS Code-Erweiterung gestartet haben, wurde er bei Bedarf für Sie installiert.

Sie können den Emulator mithilfe der Firebase-Befehlszeile zusammen mit anderen ausgewählten Komponenten der Local Emulator Suite manuell installieren. Mit diesem Befehl wird ein Konfigurationsassistent gestartet, mit dem Sie gewünschte Emulatoren auswählen, die entsprechenden Emulator-Binärdateien herunterladen und Emulatorports festlegen können, wenn die Standardeinstellungen nicht geeignet sind.

  firebase init emulators

Sobald ein Emulator installiert ist, werden keine Updateprüfungen durchgeführt und keine weiteren automatischen Downloads ausgeführt, bis Sie die Firebase-CLI-Version aktualisieren.

Firebase-Projekt auswählen

Während der Einrichtung werden Sie von der Firebase CLI aufgefordert, ein Firebase-Projekt auszuwählen oder zu erstellen. Wenn Sie ein vorhandenes Projekt auswählen, das Sie in der Firebase-Konsole mit Data Connect eingerichtet haben, wird die dort ausgewählte Konfiguration vorgeschlagen.

Emulator einrichten

Emulator konfigurieren

Wenn Sie den firebase init-Ablauf ausführen, werden Sie durch die Einrichtungsoptionen des Emulators geführt. Wie andere Emulatoren in Local Emulator Suite werden Konfigurationsparameter in lokalen Projektdateien gespeichert.

  • Die Datei firebase.json enthält Emulator-Port-Zuweisungen.
    • Der emulators:ui-Schlüssel gilt nicht für den Data Connect-Emulator.

Mit lokalen und Produktions-Data Connect-Ressourcen arbeiten

Wenn Sie sichergehen möchten, dass keine Auswirkungen auf Produktionsressourcen auftreten, legen Sie eine demo--Projekt-ID fest oder prüfen Sie, ob Ihr Clientcode so instrumentiert ist, dass eine Verbindung zum Emulator hergestellt wird, wie in einem späteren Abschnitt beschrieben.

Emulator starten

Wenn Sie den Emulator nicht interaktiv ausführen, z. B. für CI/CD-Workflows, starten Sie ihn mit der Option exec.

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

Wenn Sie vordefinierte Abfragen und Mutationen in den Clientcode einbinden und den Emulator speziell zum Testen von Clients verwenden, können Sie die Option start für interaktive Aufgaben verwenden. Sie können den Emulator auch über die VS Code-Erweiterung starten.

firebase emulators:start

Clientcode für die Kommunikation mit dem Emulator instrumentieren

So richten Sie Ihre In-App-Konfiguration oder Testklassen ein, damit sie mit dem Data Connect-Emulator interagieren:

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
  

Emulator für Tests und Continuous Integration verwenden

Local Emulator Suite-Container-Images ausführen

Die Installation und Konfiguration von Local Emulator Suite mit Containern in einer typischen CI-Umgebung ist unkompliziert.

Beachten Sie dabei Folgendes:

  • Emulator-Binärdateien werden unter ~/.cache/firebase/emulators/ installiert und im Cache gespeichert. Sie können diesen Pfad der CI-Cache-Konfiguration hinzufügen, um wiederholte Downloads zu vermeiden.
  • Wenn Sie keine firebase.json-Datei in Ihrem Repository haben, müssen Sie dem Befehl emulators:start oder emulators:exec ein Befehlszeilenargument hinzufügen, um anzugeben, welche Emulatoren gestartet werden sollen. Beispiel: --only dataconnect.

Datenbank zwischen Tests löschen

Firebase empfiehlt, Ihre Testumgebungen zwischen den Ausführungen so zurückzusetzen:

  • Dedizierte Mutationen schreiben, um Folgendes zu verarbeiten:
    • Füllen Sie bei der Einrichtung eine lokale Datenbankinstanz mit Startdaten.
    • Löschen Sie beim Teardown geänderte Daten aus der Datenbankinstanz nach dem Test.

Unterschiede zwischen dem Data Connect-Emulator und der Produktion

Der Data Connect-Emulator simuliert viele Funktionen des serverseitigen Produkts. Es gibt jedoch einige Ausnahmen:

  • Die Version und die detaillierte Konfiguration von PGLite können von der Version Ihrer Produktions-Cloud SQL-Instanz abweichen.
  • Wenn Sie den Emulator für die Entwicklung mit der pgvector- und Vertex API-Integration von Data Connect verwenden, erfolgen Aufrufe an die Cloud Vertex API direkt und nicht über die Vertex-Integration von Cloud SQL. Es werden jedoch weiterhin Aufrufe an die Produktions-API gesendet. Sie müssen also ein echtes Firebase-Projekt verwenden und können kein demo--Projekt verwenden. Außerdem fallen Kosten für die Vertex API an.