Utiliser l'émulateur Data Connect pour le CI/CD

Firebase Data Connect fournit un émulateur local pour un déploiement de bout en bout. prototypage, ainsi que l'intégration et le déploiement continus (CI/CD) :

  • L'émulateur Data Connect interagit avec une instance intégrée Instance de base de données PGLite pour prototyper des requêtes et des mutations, et tester dans un environnement entièrement local.
  • L'émulateur Data Connect peut également être utilisé pour les contenus non interactifs travail. Il vous permet d'exécuter des tests automatisés et est adapté aux workflows CI/CD. Cela est utile lorsque vos schémas sont stables et que vous souhaitez prototyper et tester le code côté client.

Ce guide explique plus en détail que le guide de démarrage rapide l'installation et l'utilisation de l'émulateur.

Installer l'émulateur Data Connect

Avant d'installer Local Emulator Suite pour utiliser l'émulateur Data Connect, vous devez disposer des éléments suivants :

  • Node.js 18.0 ou version ultérieure

Installer la CLI Firebase et configurer le répertoire du projet

  1. Installez la CLI Firebase en suivant le guide d'installation. Veillez à mettre à jour régulièrement les données, car les L'émulateur Data Connect est en cours de développement avec des corrections de bugs et nouvelles fonctionnalités.

  2. Si vous ne l'avez pas déjà fait, initialisez le répertoire de travail actuel en tant que un projet Firebase, en suivant les instructions pour spécifier les produits à utiliser:

    firebase init
    

Définir ou modifier la configuration Local Emulator Suite

Si vous avez démarré l'émulateur Data Connect à partir de Firebase VS Code , l'émulateur a été installé pour vous, si nécessaire.

Vous pouvez utiliser la CLI Firebase pour installer manuellement l'émulateur avec d'autres composants sélectionnés de Local Emulator Suite. Cette commande lance une de configuration qui vous permet de sélectionner les émulateurs qui vous intéressent, téléchargez le les fichiers binaires correspondants, et définissez les ports de l'émulateur si les valeurs par défaut sont n'est pas approprié.

  firebase init emulators

Une fois l'émulateur installé, aucune vérification des mises à jour n'est effectuée et aucune les téléchargements automatiques seront effectués jusqu'à ce que vous mettiez à jour la version de la CLI Firebase.

Sélectionner un projet Firebase

Dans le flux de configuration, la CLI Firebase vous invite à choisir ou à créer un projet Firebase. Si vous choisissez un projet existant que vous avez configuré avec Data Connect dans la console Firebase, la configuration que vous avez choisie y sera suggérée.

Configurer l'émulateur

Configurer l'émulateur

L'exécution du flux firebase init vous guide à travers les options de configuration de l'émulateur. Comme les autres émulateurs de Local Emulator Suite, les paramètres de configuration sont stockés dans des fichiers de projet locaux.

  • Le fichier firebase.json contient des attributions de ports d'émulateur.
    • La clé emulators:ui ne s'applique pas à Data Connect émulateur d'application.

Utiliser des ressources Data Connect locales et de production

Si vous voulez vous assurer de ne pas avoir d'impact sur les ressources de production, définissez un projectID demo- ou assurez-vous que votre code client est instrumenté pour se connecter à l'émulateur, comme indiqué dans une section ultérieure.

Démarrer l'émulateur

Si vous exécutez l'émulateur de manière non interactive, par exemple pour les workflows CI/CD, démarrez-le avec l'option exec.

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

Si vous intégrez des requêtes et des mutations prédéfinies dans le code client et que vous utilisez l'émulateur spécifiquement pour tester les clients, vous pouvez utiliser l'option start pour un travail interactif. Vous pouvez également démarrer l'émulateur à partir de l'extension VS Code.

firebase emulators:start

Instrumentez votre code client pour communiquer avec l'émulateur.

Définissez la configuration dans l'application ou les classes de test pour interagir avec Data Connect comme suit.

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
  

Utiliser l'émulateur pour les tests et l'intégration continue

Exécuter des images Local Emulator Suite conteneurisées

L'installation et la configuration de Local Emulator Suite avec des conteneurs dans une configuration CI typique sont simples.

Voici quelques points à prendre en compte :

  • Les binaires de l'émulateur sont installés et mis en cache dans ~/.cache/firebase/emulators/. Vous pouvez ajouter ce chemin à la configuration de votre cache CI pour éviter les téléchargements répétés.
  • Si vous ne disposez d'aucun fichier firebase.json dans votre dépôt, vous devez ajouter un argument de ligne de commande à la commande emulators:start ou emulators:exec pour spécifier les émulateurs à démarrer. Par exemple, --only dataconnect.

Effacer votre base de données entre les tests

Pour réinitialiser vos environnements de test entre les exécutions, Firebase recommande les étapes suivantes :

  • Écrire des mutations dédiées pour gérer les éléments suivants :
    • Lors de la configuration, renseignez une instance de base de données locale avec des données de démarrage.
    • Lors du démontage, supprimez les données modifiées de l'instance de base de données post-test.

Différences entre l'émulateur Data Connect et la production

L'émulateur Data Connect simule de nombreuses fonctionnalités côté serveur produit. Toutefois, il existe quelques exceptions à prendre en compte :

  • La version et la configuration détaillée de PGLite peuvent différer de la version de votre instance Cloud SQL de production.
  • Si vous utilisez l'émulateur pour développer avec l'intégration de pgvector et de l'API Vertex de Data Connect, les appels à l'API Cloud Vertex sont effectués directement, plutôt que via l'intégration de Vertex dans Cloud SQL. Toutefois, les appels à l'API de production sont toujours effectuées, ce qui signifie que vous devez utiliser ne peut pas utiliser de projet demo-, et les coûts de l'API Vertex seront encourus.