Firebase SQL Connect предоставляет локальный эмулятор для сквозного прототипирования, а также для процессов непрерывной интеграции и непрерывного развертывания (CI/CD):
- Эмулятор SQL Connect взаимодействует с локальным интегрированным экземпляром базы данных PGLite, позволяя создавать прототипы запросов и мутаций, а также тестировать клиентский код в полностью локальной среде.
- Эмулятор SQL Connect также можно использовать для неинтерактивной работы. Он позволяет запускать автоматизированные тесты и подходит для использования в рабочих процессах CI/CD. Это полезно, когда ваши схемы стабильны и вы хотите создавать прототипы и тестировать клиентский код.
В этом руководстве установка и использование эмулятора описаны более подробно, чем в кратком руководстве.
Установите эмулятор SQL Connect .
Перед установкой Local Emulator Suite для использования эмулятора SQL Connect вам потребуется:
- Node.js версии 18.0 или выше.
Установите Firebase CLI и настройте каталог проекта.
Установите Firebase CLI, следуя инструкции по установке . Обязательно регулярно обновляйте программу , поскольку эмулятор SQL Connect находится в активной разработке, в ходе которой исправляются ошибки и добавляются новые функции.
Если вы еще этого не сделали, инициализируйте текущий рабочий каталог как проект Firebase, следуя подсказкам, чтобы указать, какие продукты использовать:
firebase init
Настройте или измените конфигурацию Local Emulator Suite
Если вы запустили эмулятор SQL Connect из расширения SQL Connect для VS Code, то при необходимости эмулятор был установлен автоматически.
Вы можете использовать Firebase CLI для ручной установки эмулятора вместе с другими выбранными компонентами Local Emulator Suite . Эта команда запускает мастер настройки, который позволяет выбрать интересующие вас эмуляторы, загрузить соответствующие бинарные файлы эмуляторов и установить порты эмуляторов, если значения по умолчанию не подходят.
firebase init emulatorsПосле установки эмулятора проверка обновлений не выполняется, и дополнительные автоматические загрузки не будут происходить до тех пор, пока вы не обновите версию Firebase CLI.
Выберите проект Firebase
В процессе настройки Firebase CLI предлагает выбрать или создать проект Firebase. Если вы выберете существующий проект, настроенный с помощью SQL Connect в консоли Firebase , вам будет предложена выбранная там конфигурация.
Настройте эмулятор
Настройте эмулятор
Запуск процесса firebase init проведет вас через параметры настройки эмулятора. Как и в других эмуляторах из Local Emulator Suite , параметры конфигурации хранятся в локальных файлах проекта.
- В вашем файле
firebase.jsonуказаны назначенные порты эмулятора.- Ключ
emulators:uiне применяется к эмулятору SQL Connect .
- Ключ
Работа с локальными и производственными ресурсами SQL Connect
Чтобы избежать негативного влияния на производственные ресурсы, задайте идентификатор demo- projectID) или убедитесь, что ваш клиентский код инструментирован для подключения к эмулятору, как будет описано в последующем разделе.
Запустите эмулятор
Если вы используете эмулятор в неинтерактивном режиме, например, для рабочих процессов CI/CD, запустите его с опцией exec .
firebase emulators:exec ./path/to/test-script.sh Если вы интегрируете предопределенные запросы и мутации в клиентский код и используете эмулятор специально для тестирования клиентов, вы можете использовать опцию start для интерактивной работы. Вы также можете запустить эмулятор из расширения SQL Connect для VS Code.
firebase emulators:startДобавьте в свой клиентский код инструменты для взаимодействия с эмулятором.
Для взаимодействия с эмулятором SQL 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 рекомендует следующее:
- Разработка специализированных мутаций для обработки следующих задач:
- В процессе настройки заполните локальный экземпляр базы данных исходными данными.
- При завершении процесса удалите измененные данные из экземпляра базы данных после тестирования.
Чем эмулятор SQL Connect отличается от рабочей среды?
Эмулятор SQL Connect имитирует многие функции серверной части продукта. Однако следует учитывать некоторые исключения:
- Версия и подробные настройки PGLite могут отличаться от версии вашего рабочего экземпляра Cloud SQL.
- Если вы используете эмулятор для разработки с интеграцией pgvector и Vertex API от SQL Connect , вызовы к Cloud Vertex API осуществляются напрямую, а не через интеграцию Vertex с Cloud SQL. Однако вызовы к производственному API по-прежнему будут выполняться, а это значит, что вам необходимо использовать реальный проект Firebase, нельзя использовать
demo-проект, и будут взиматься расходы на Vertex API.