Usar o emulador do Data Connect para CI/CD

Firebase Data Connect oferece um emulador local para prototipagem completa , além de fluxos de integração contínua e implantação contínua (CI/CD):

  • O Data Connect emulador interage com uma instância de banco de dados PGLite integrada local para permitir que você crie protótipos de consultas e mutações e teste o código do cliente em um ambiente totalmente local.
  • O emulador Data Connect também pode ser usado para trabalhos não interativos. Ele permite executar testes automatizados e é adequado para uso com fluxos de trabalho de CI/CD. Isso é útil quando os esquemas estão estáveis e você quer criar protótipos e testar o código do cliente.

Este guia aborda a instalação e o uso do emulador com mais detalhes do que o guia de início rápido.

Instalar o emulador Data Connect

Antes de instalar o Local Emulator Suite para usar o Data Connect emulador, você vai precisar do:

  • Node.js versão 18.0 ou mais recente.

Instalar a CLI do Firebase e configurar o diretório do projeto

  1. Instale a CLI Firebase seguindo o guia de instalação . Certifique-se de atualizar regularmente, já que o Data Connect emulador está em desenvolvimento ativo com correções de bugs e novos recursos.

  2. Se ainda não tiver feito isso, inicialize o diretório de trabalho atual como um Projeto do Firebase, seguindo as instruções para especificar quais produtos usar:

    firebase init

Definir ou modificar a configuração Local Emulator Suite

Se você iniciou o emulador Data Connect na extensão do Data Connect VS Code, o emulador foi instalado para você, se necessário.

É possível usar a CLI Firebase para instalar manualmente o emulador com outros componentes selecionados do Local Emulator Suite. Este comando inicia um assistente de configuração que permite selecionar emuladores do seu interesse, fazer o download dos arquivos binários do emulador correspondentes e definir as portas do emulador se os padrões não forem apropriados.

  firebase init emulators

Depois que um emulador for instalado, nenhuma verificação de atualização será realizada e nenhum download automático adicional ocorrerá até que você atualize a versão da CLI Firebase.

Escolher um projeto do Firebase

No fluxo de configuração, a Firebase CLI solicita que você escolha ou crie um projeto do Firebase. Se você escolher um projeto já configurado com Data Connect no console Firebase, a configuração escolhida será sugerida.

Configurar o emulador

Configurar o emulador

A execução do fluxo firebase init orienta você pelas opções de configuração do emulador. Como outros emuladores no Local Emulator Suite, os parâmetros de configuração são armazenados em arquivos de projeto locais.

  • O arquivo firebase.json contém atribuições de porta do emulador.
    • A chave emulators:ui não se aplica ao Data Connect emulador.

Trabalhar com recursos locais e de produção Data Connect

Se você quiser garantir que não vai afetar os recursos de produção, defina um projectID demo- ou verifique se o código do cliente está instrumentado para se conectar ao emulador, conforme discutido em uma seção posterior.

Iniciar o emulador

Se você estiver executando o emulador de forma não interativa, por exemplo, para fluxos de trabalho de CI/CD, inicie-o com a opção exec.

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

Se você estiver integrando consultas e mutações predefinidas no código do cliente e usando o emulador especificamente para testar clientes, use a opção start para trabalhos interativos. Também é possível iniciar o emulador na extensão do Data Connect VS Code.

firebase emulators:start

Instrumentar o código do cliente para se comunicar com o emulador

Defina a configuração no app ou as classes de teste para interagir com o Data Connect emulador da seguinte maneira.

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
  

Usar o emulador para testes e integração contínua

Executar imagens de contêinerLocal Emulator Suite

É simples instalar e configurar o Local Emulator Suite com contêineres em uma configuração de CI típica.

Fique atento a alguns problemas:

  • Os binários do emulador são instalados e armazenados em cache em ~/.cache/firebase/emulators/. Adicione esse caminho à configuração do cache de CI para evitar downloads repetidos.
  • Se você não tiver um arquivo firebase.json no seu repositório, adicione um argumento de linha de comando ao comando emulators:start ou emulators:exec para especificar quais emuladores devem ser iniciados. Por exemplo, --only dataconnect.

Limpar o banco de dados entre os testes

Para redefinir os ambientes de teste entre as execuções, o Firebase recomenda:

  • Escrever mutações dedicadas para processar o seguinte:
    • Na configuração, preencha uma instância de banco de dados local com dados iniciais.
    • Na desmontagem, exclua os dados modificados da instância de banco de dados pós-teste.

Qual é a diferença entre o emulador Data Connect e a produção?

O emulador Data Connect simula muitos recursos do produto do lado do servidor. No entanto, há algumas exceções a serem consideradas:

  • A versão e a configuração detalhada do PGLite podem ser diferentes da versão da instância de produção do Cloud SQL.
  • Se você estiver usando o emulador para desenvolver com a integração do Data Connectpgvector e da API Vertex do Data Connect, as chamadas para a API Vertex do Cloud serão feitas diretamente, em vez de pela integração do Vertex do Cloud SQL. No entanto, as chamadas para a API de produção ainda são feitas, o que significa que você precisa usar um projeto real do Firebase, não pode usar um projeto demo- e os custos da API Vertex serão incorridos.