Usa el emulador de Data Connect para CI/CD

Firebase Data Connect te proporciona un emulador local para el prototipado de extremo a extremo, así como flujos de integración y de implementación continuas (CI/CD):

  • El emulador de Data Connect interactúa con una instancia de base de datos PGLite integrada local para permitirte crear prototipos de consultas y mutaciones, y probar el código del cliente en un entorno completamente local.
  • El emulador de Data Connect también se puede usar para trabajos no interactivos. Te permite ejecutar pruebas automatizadas y es adecuado para usar con flujos de trabajo de CI/CD. Esto es útil cuando tus esquemas son estables y deseas crear prototipos y probar el código del cliente.

En esta guía, se explica la instalación y el uso del emulador con más detalle que en el guía de inicio rápido.

Instala el emulador de Data Connect

Antes de instalar Local Emulator Suite para usar el emulador de Data Connect, necesitarás lo siguiente:

  • Node.js versión 18.0 o posterior

Instala la CLI de Firebase y configura el directorio del proyecto

  1. Instala la CLI de Firebase siguiendo la guía de instalación. Asegúrate de actualizarlo con frecuencia, ya que el emulador de Data Connect está en desarrollo activo con correcciones de errores y funciones nuevas.

  2. Si aún no lo has hecho, inicializa el directorio de trabajo actual como un proyecto de Firebase y sigue las indicaciones para especificar los productos que usarás:

    firebase init
    

Configura o modifica la configuración de Local Emulator Suite

Si iniciaste el emulador de Data Connect desde la extensión de VS Code de Firebase, el emulador se instaló por ti, si es necesario.

Puedes usar la CLI de Firebase para instalar el emulador de forma manual junto con otros componentes seleccionados de Local Emulator Suite. Este comando inicia un asistente de configuración que te permite seleccionar emuladores de interés, descargar los archivos binarios correspondientes del emulador y establecer puertos para el emulador si los valores predeterminados no son adecuados.

  firebase init emulators

Una vez que se instale un emulador, no se realizarán verificaciones de actualizaciones ni descargas automáticas adicionales hasta que actualices la versión de Firebase CLI.

Elige un proyecto de Firebase

En el flujo de configuración, la CLI de Firebase te solicita que elijas o crees un proyecto de Firebase. Si eliges un proyecto existente que configuraste con Data Connect en la consola de Firebase, se sugerirá la configuración que elegiste en ella.

Configurar el emulador

Cómo configurar el emulador

Si ejecutas el flujo firebase init, se te guiará por las opciones de configuración del emulador. Al igual que otros emuladores en Local Emulator Suite, los parámetros de configuración se almacenan en archivos de proyecto locales.

  • Tu archivo firebase.json contiene asignaciones de puertos del emulador.
    • La clave emulators:ui no se aplica al emulador Data Connect.

Cómo trabajar con recursos Data Connect locales y de producción

Si quieres asegurarte de no afectar los recursos de producción, establece un projectID demo- o asegúrate de que el código del cliente esté instrumentado para conectarse al emulador, como se explica en una sección posterior.

Inicia el emulador

Si ejecutas el emulador de forma no interactiva, por ejemplo, para flujos de trabajo de CI/CD, inícialo con la opción exec.

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

Si integras consultas y mutaciones predefinidas en el código del cliente y usas el emulador específicamente para probar clientes, puedes usar la opción start para el trabajo interactivo. También puedes iniciar el emulador desde la extensión de VS Code.

firebase emulators:start

Instrumenta tu código de cliente para que se comunique con el emulador

Configura la app o las clases de prueba para que interactúen con el emulador de Data Connect de la siguiente manera.

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 para 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
  

Usa el emulador para pruebas y la integración continua

Ejecuta imágenes Local Emulator Suite en contenedores

La instalación y configuración de Local Emulator Suite con contenedores en un entorno típico de CI es sencilla.

Estos son algunos problemas que debes tener en cuenta:

  • Los objetos binarios del emulador se instalan y almacenan en caché en ~/.cache/firebase/emulators/. Recomendamos agregar esta ruta de acceso a la configuración de caché de la CI para evitar que se repitan las descargas.
  • Si no tienes un archivo firebase.json en tu repositorio, debes agregar un argumento de línea de comandos a los comandos emulators:start o emulators:exec para especificar los emuladores que se deben iniciar. Por ejemplo, --only dataconnect

Borra la base de datos entre pruebas

Para restablecer tus entornos de prueba entre ejecuciones, Firebase recomienda lo siguiente:

  • Escritura de mutaciones dedicadas para controlar lo siguiente:
    • En la configuración, completa una instancia de base de datos local con datos iniciales.
    • En el desmontaje, borra los datos modificados de la instancia de la base de datos posterior a la prueba.

Diferencias entre el emulador de Data Connect y el entorno de producción

El emulador de Data Connect simula muchas funciones del producto del servidor. Sin embargo, existen algunas excepciones que debes tener en cuenta:

  • La versión y la configuración detallada de PGLite pueden diferir de la versión de tu instancia de Cloud SQL de producción.
  • Si usas el emulador para desarrollar con la integración de Data Connect pgvector y la API de Vertex, las llamadas a la API de Cloud Vertex se realizan directamente, en lugar de hacerlo a través de la integración de Vertex de Cloud SQL. Sin embargo, las llamadas a la API de producción se siguen realizando, lo que significa que debes usar un proyecto de Firebase real, no puedes usar un proyecto demo- y se incurrirá en los costos de la API de Vertex.