Используйте эмулятор Data Connect для CI/CD

Firebase Data Connect предоставляет вам локальный эмулятор для сквозного прототипирования, а также потоков непрерывной интеграции и непрерывного развертывания (CI/CD):

  • Эмулятор Data Connect взаимодействует с локальным интегрированным экземпляром базы данных PGLite, позволяя вам создавать прототипы запросов и мутаций, а также тестировать клиентский код в полностью локальной среде.
  • Эмулятор Data Connect также можно использовать для неинтерактивной работы. Он позволяет запускать автоматизированные тесты и подходит для использования с рабочими процессами CI/CD. Это полезно, когда ваши схемы стабильны и вы хотите создать прототип и протестировать клиентский код.

В этом руководстве установка и использование эмулятора рассматриваются более подробно, чем в кратком руководстве.

Установите эмулятор Data Connect

Перед установкой Local Emulator Suite для использования эмулятора Data Connect вам потребуется:

  • Node.js версии 18.0 или выше.

Установите Firebase CLI и настройте каталог проекта

  1. Установите Firebase CLI, следуя руководству по установке . Обязательно регулярно обновляйте , так как эмулятор Data Connect находится в стадии активной разработки с исправлениями ошибок и новыми функциями.

  2. Если вы еще этого не сделали, инициализируйте текущий рабочий каталог как проект Firebase, следуя подсказкам, чтобы указать, какие продукты следует использовать:

    firebase init

Установите или измените конфигурацию Local Emulator Suite

Если вы запустили эмулятор Data Connect из расширения Firebase VS Code, эмулятор был установлен автоматически (при необходимости).

Вы можете использовать Firebase CLI для ручной установки эмулятора вместе с другими выбранными компонентами Local Emulator Suite . Эта команда запускает мастер конфигурации, который позволяет вам выбрать интересующие вас эмуляторы, загрузить соответствующие двоичные файлы эмулятора и задать порты эмулятора, если значения по умолчанию не подходят.

  firebase init emulators

После установки эмулятора проверки обновлений не выполняются и дополнительные автоматические загрузки не производятся до тех пор, пока вы не обновите версию Firebase CLI.

Выберите проект Firebase

В процессе настройки Firebase CLI предлагает вам выбрать или создать проект Firebase. Если вы выберете существующий проект, настроенный с помощью Data Connect в консоли Firebase , будет предложена выбранная вами там конфигурация.

Настройте эмулятор

Настройте эмулятор

Запуск потока firebase init проведет вас через параметры настройки эмулятора. Как и в других эмуляторах в Local Emulator Suite , параметры конфигурации хранятся в локальных файлах проекта.

  • Ваш файл firebase.json содержит назначения портов эмулятора.
    • Ключ emulators:ui не применяется к эмулятору Data Connect .

Работа с локальными и производственными ресурсами Data Connect

Если вы хотите быть уверены, что это не повлияет на производственные ресурсы, задайте demo- projectID или убедитесь, что ваш клиентский код настроен на подключение к эмулятору, как обсуждается в следующем разделе.

Запустить эмулятор

Если вы запускаете эмулятор в неинтерактивном режиме, например, для рабочих процессов CI/CD, запустите его с параметром exec .

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

Если вы интегрируете предопределенные запросы и мутации в клиентский код и используете эмулятор специально для тестирования клиентов, вы можете использовать опцию start для интерактивной работы. Вы также можете запустить эмулятор из расширения VS Code.

firebase emulators:start

Инструментируйте свой клиентский код для взаимодействия с эмулятором

Настройте конфигурацию приложения или тестовые классы для взаимодействия с эмулятором Data Connect следующим образом.

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
  
Котлин 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
  

Используйте эмулятор для тестирования и непрерывной интеграции

Запуск контейнерных Local Emulator Suite

Установка и настройка Local Emulator Suite с контейнерами в типичной конфигурации CI не вызывает затруднений.

Следует отметить несколько моментов:

  • Бинарные файлы эмулятора устанавливаются и кэшируются в ~/.cache/firebase/emulators/ . Вы можете добавить этот путь в конфигурацию кэша CI, чтобы избежать повторных загрузок.
  • Если в вашем репозитории нет файла firebase.json , необходимо добавить аргумент командной строки в emulators:start или emulators:exec , чтобы указать, какие эмуляторы следует запустить. Например, --only dataconnect .

Очищайте базу данных между тестами

Для сброса тестовых сред между запусками Firebase рекомендует:

  • Написание специальных мутаций для обработки следующего:
    • В процессе настройки заполните локальный экземпляр базы данных начальными данными.
    • При демонтаже удалите измененные данные из экземпляра базы данных после тестирования.

Чем эмулятор Data Connect отличается от производства

Эмулятор Data Connect имитирует многие функции серверного продукта. Однако есть некоторые исключения, о которых следует знать:

  • Версия и подробная конфигурация PGLite могут отличаться от версии вашего производственного экземпляра Cloud SQL.
  • Если вы используете эмулятор для разработки с использованием интеграции Data Connect pgvector и Vertex API, вызовы Cloud Vertex API выполняются напрямую, а не через интеграцию Cloud SQL Vertex. Однако вызовы к производственному API все равно выполняются, что означает, что вы должны использовать реальный проект Firebase, не можете использовать demo- проект, и будут понесены расходы на Vertex API.