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 einem lokal integrierten PGLite-Datenbankinstanz, mit der Sie Prototypen für Abfragen und Mutationen erstellen und testen können in einer vollständig lokalen Umgebung zu erstellen.
  • 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

Vor der Installation von Local Emulator Suite zur Verwendung von Data Connect Emulator erstellen, benötigen Sie Folgendes:

  • Node.js-Version 18.0 oder höher.

Firebase-CLI installieren und Projektverzeichnis einrichten

  1. Installieren Sie die Firebase-Befehlszeile gemäß 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. Initialisieren Sie, falls noch nicht geschehen, das aktuelle Arbeitsverzeichnis als Ein Firebase-Projekt. Geben Sie dabei mithilfe von Aufforderungen an, welche Produkte verwendet werden sollen:

    firebase init
    

Local Emulator Suite-Konfiguration festlegen oder ändern

Wenn Sie den Data Connect-Emulator über Firebase VS Code gestartet haben wurde der Emulator für Sie installiert.

Sie können die Firebase-Befehlszeile verwenden, um den Emulator zusammen mit weitere ausgewählte Komponenten von Local Emulator Suite. Dieser Befehl startet eine Konfigurationsassistenten, mit dem Sie relevante Emulatoren auswählen können, laden Sie die entsprechenden Emulator-Binärdateien und legen Sie die Emulator-Ports fest, wenn die Standardeinstellungen nicht angemessen ist.

  firebase init emulators

Sobald ein Emulator installiert ist, werden keine Updateprüfungen durchgeführt und keine zusätzlichen Automatische Downloads finden statt, bis Sie die Version der Firebase-Befehlszeile aktualisieren.

Firebase-Projekt auswählen

Während der Einrichtung werden Sie von der Firebase-Befehlszeile aufgefordert, eine Firebase-Projekt Wenn Sie ein vorhandenes Projekt auswählen, mit dem Sie Data Connect in der Firebase-Konsole, die von Ihnen ausgewählte Konfiguration werden Vorschläge angezeigt.

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 Emulatoren in Local Emulator Suite werden auch Konfigurationsparameter werden 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 Ressourcen und Data Connect-Produktionsressourcen 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 beschrieben.

Emulator starten

Wenn Sie den Emulator nicht interaktiv ausführen, z. B. für CI/CD können Sie mit der Option exec beginnen.

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

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

firebase emulators:start

Clientcode instrumentieren, um mit dem Emulator zu kommunizieren

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 für 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.

Es sind einige Probleme zu beachten:

  • Emulator-Binärdateien werden unter ~/.cache/firebase/emulators/ installiert und im Cache gespeichert. Sie können diesen Pfad Ihrem CI-Cache 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üllen Sie bei der Einrichtung eine lokale Datenbankinstanz mit Ausgangsdaten.
    • 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 Features der serverseitigen Produkt. 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 ausgeführt. Anrufe an die Production API hergestellt werden, d. h., Sie müssen eine echte Firebase- Projekt kann kein demo--Projekt verwenden und die Kosten für die Vertex API betragen anfallen.