Data Connect-Emulator für CI/CD verwenden

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

  • Der Data Connect-Emulator interagiert mit einer lokalen 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. Die Bibliothek 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 als im Schnellstart beschrieben.

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 Emulator regelmäßig, da er aktiv weiterentwickelt wird und Fehlerkorrekturen und neue Funktionen erhält.Data Connect

  2. Wenn Sie es noch nicht getan haben, initialisieren Sie das aktuelle Arbeitsverzeichnis als Firebase-Projekt und folgen Sie den Aufforderungen, 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 der Emulator bei Bedarf für Sie installiert.

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

  firebase init emulators

Nach der Installation eines Emulators werden keine Updateprüfungen durchgeführt und es erfolgen keine zusätzlichen automatischen Downloads, bis Sie Ihre Firebase-CLI-Version aktualisieren.

Firebase-Projekt auswählen

Im Einrichtungsablauf werden Sie von der Firebase CLI aufgefordert, ein Firebase-Projekt auszuwählen oder zu erstellen. Wenn Sie ein vorhandenes Projekt auswählen, das Sie mit Data Connect in der Firebase-Konsole 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 Optionen für die Emulatoreinrichtung geführt. Wie bei anderen Emulatoren in der Local Emulator Suite 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 Produktionsressourcen von Data Connect arbeiten

Wenn Sie sichergehen möchten, dass keine Produktionsressourcen beeinträchtigt werden, legen Sie eine demo--Projekt-ID fest oder sorgen Sie dafür, dass Ihr Clientcode so instrumentiert ist, dass er eine Verbindung zum Emulator herstellt, 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 Clientcode einbinden und den Emulator speziell zum Testen von Clients verwenden, können Sie die Option start für die interaktive Arbeit nutzen. Sie können den Emulator auch über die VS Code-Erweiterung starten.

firebase emulators:start

Clientcode für die Kommunikation mit dem Emulator instrumentieren

Richten Sie Ihre In-App-Konfiguration oder Testklassen so ein, dass 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-Einrichtung ist unkompliziert.

Dabei sind einige Punkte zu beachten:

  • Emulator-Binärdateien werden unter ~/.cache/firebase/emulators/ installiert und im Cache gespeichert. Möglicherweise möchten Sie diesen Pfad Ihrer CI-Cachekonfiguration 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 leeren

So setzen Sie Ihre Testumgebungen zwischen den Ausführungen zurück:

  • Spezielle Mutationen für die folgenden Fälle schreiben:
    • Richten Sie eine lokale Datenbankinstanz mit Startdaten ein.
    • 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 detaillierte Konfiguration von PGLite können sich von der Version Ihrer Cloud SQL-Produktionsinstanz unterscheiden.
  • Wenn Sie den Emulator für die Entwicklung mit der pgvector- und Vertex API-Integration von Data Connect verwenden, werden Aufrufe der Cloud Vertex API direkt und nicht über die Vertex-Integration von Cloud SQL ausgeführt. Es werden jedoch weiterhin Aufrufe an die Produktions-API gesendet. Das bedeutet, dass Sie ein echtes Firebase-Projekt verwenden müssen und kein demo--Projekt. Außerdem fallen Kosten für die Vertex API an.