Используйте эмулятор 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 для ручной установки эмулятора вместе с другими выбранными компонентами Local Emulator Suite . Эта команда запускает мастер настройки, который позволяет выбрать интересующие эмуляторы, загрузить соответствующие двоичные файлы эмулятора и установить порты эмулятора, если значения по умолчанию не подходят.

  firebase init emulators

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

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

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

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

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

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

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

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

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

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

Если вы запускаете эмулятор в неинтерактивном режиме, например для рабочих процессов 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.