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

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

  • L'émulateur Data Connect interagit avec une instance de base de données PGLite intégrée locale pour vous permettre de prototyper des requêtes et des mutations, et de tester le code client dans un environnement entièrement local.
  • L'émulateur Data Connect peut également être utilisé pour des tâches non interactives. Il vous permet d'exécuter des tests automatisés et convient 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 couvre l'installation et l'utilisation de l'émulateur plus en détail que le guide de démarrage rapide.

Installer l'émulateur Data Connect

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

  • Node.js version 18.0 ou 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 à effectuer régulièrement des mises à jour, car l'émulateur Data Connect est en cours de développement et fait l'objet de corrections de bugs et de nouvelles fonctionnalités.

  2. Si vous ne l'avez pas déjà fait, initialisez le répertoire de travail actuel en tant que projet Firebase, en suivant les invites 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 l'extension Firebase VS Code, l'émulateur a été installé pour vous, si nécessaire.

Vous pouvez utiliser la CLI Firebase pour installer manuellement l'émulateur ainsi que d'autres composants sélectionnés de Local Emulator Suite. Cette commande démarre un assistant de configuration qui vous permet de sélectionner les émulateurs qui vous intéressent, de télécharger les fichiers binaires d'émulateur correspondants et de définir les ports d'émulateur si les valeurs par défaut ne conviennent pas.

  firebase init emulators

Une fois un émulateur installé, aucune vérification de mise à jour n'est effectuée et aucun téléchargement automatique supplémentaire ne se produit tant que vous n'avez pas mis à jour votre version de la CLI Firebase.

Choisir 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 sera suggérée.

Configurer l'émulateur

Configurer l'émulateur

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

  • Votre fichier firebase.json contient les attributions de port de l'émulateur.
    • La clé emulators:ui ne s'applique pas à l'émulateur Data Connect.

Utiliser les ressources Data Connect locales et de production

Si vous voulez être sûr de ne pas impacter les ressources de production, définissez un demo- projectID 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 des 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

Instrumenter votre code client pour communiquer avec l'émulateur

Configurez vos classes de configuration ou de test dans l'application pour interagir avec l'émulateur 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 à noter :

  • 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 n'avez pas de 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 :

  • Écrire des mutations dédiées pour gérer les éléments suivants :
    • Lors de la configuration, remplissez une instance de base de données locale avec des données de départ.
    • Lors de la suppression, 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 du produit côté serveur. Toutefois, il existe quelques exceptions :

  • La version et la configuration détaillée de PGLite peuvent différer de celles de votre instance Cloud SQL de production.
  • Si vous utilisez l'émulateur pour développer avec l'intégration pgvector et Vertex API de Data Connect, les appels à l'API Cloud Vertex sont effectués directement, plutôt que via l'intégration Vertex de Cloud SQL. Toutefois, les appels à l'API de production sont toujours effectués. Cela signifie que vous devez utiliser un véritable projet Firebase, que vous ne pouvez pas utiliser un projet demo- et que vous devrez payer les coûts de l'API Vertex.