Используйте эмулятор 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
  
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
  

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

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

Установка и настройка пакета Local Emulator Suite с контейнерами в типичной системе непрерывной интеграции не представляет сложности.

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

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

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

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

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

Чем эмулятор Data Connect отличается от рабочей среды?

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

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