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. Damit können Sie automatisierte Tests ausführen und es eignet sich für die 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 um Fehlerkorrekturen und neue Funktionen ergänzt wird.

  2. Wenn Sie es noch nicht getan haben, 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

Nach der Installation eines Emulators werden keine Updates mehr geprüft und es werden 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-Vorgang ausführen, werden Sie durch die Optionen zur Einrichtung des Emulators geführt. Wie bei anderen Local Emulator Suite-Emulatoren werden Konfigurationsparameter in lokalen Projektdateien gespeichert.

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

Mit lokalen und Produktions-Data Connect-Ressourcen arbeiten

Wenn Sie sicher sein möchten, dass keine Produktionsressourcen beeinträchtigt werden, legen Sie eine demo--Projekt-ID fest oder sorgen Sie dafür, dass Ihr Clientcode für die Verbindung zum Emulator instrumentiert ist, wie in einem späteren Abschnitt erläutert.

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 die interaktive Arbeit 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

Containerisierte Local Emulator Suite-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 den Tests löschen

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

  • Schreiben von speziellen Mutationen für Folgendes:
    • Fülle bei der Einrichtung eine lokale Datenbankinstanz mit Startdaten.
    • Löschen Sie beim Rückbau 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 verwenden, um mit der pgvector- und Vertex API-Integration von Data Connect zu entwickeln, werden Aufrufe an die Cloud Vertex API direkt und nicht über die Vertex-Integration von Cloud SQL gesendet. 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.