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 les tâches non interactives. 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 du 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, car l'émulateur Data Connect est en cours de développement avec des 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 avec 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 correspondants et de définir les ports de l'émulateur si les valeurs par défaut ne sont pas appropriées.

  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 n'a lieu tant que vous n'avez pas mis à jour la 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 y sera suggérée.

Configurer l'émulateur

Configurer l'émulateur

L'exécution du flux firebase init vous guidera tout au long des 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.

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

Utiliser des ressources Data Connect locales et de production

Pour vous assurer de ne pas affecter les ressources de production, définissez un ID de projet 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 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 les tâches interactives. 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.

Configurez votre configuration dans l'application ou vos classes de test 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

Dans une configuration CI classique, l'installation et la configuration de Local Emulator Suite avec des conteneurs sont simples.

Voici quelques points à prendre en compte :

  • Les binaires de l'émulateur sont installés et mis en cache à ~/.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 pas d'un 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 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 à prendre en compte :

  • La version et la configuration détaillée de PGLite peuvent différer de la version de votre instance de production Cloud SQL.
  • 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, des appels à l'API de production sont toujours effectués, ce qui signifie que vous devez utiliser un véritable projet Firebase, que vous ne pouvez pas utiliser de projet demo- et que des coûts seront engagés pour l'API Vertex.