Catch up on everthing we announced at this year's Firebase Summit. Learn more

Установить, настроить и интегрировать Local Emulator Suite

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

Установите Local Emulator Suite

Перед установкой Emulator Suite вам потребуется:

  • Node.js версии 8.0 или выше.
  • Java версии 1.8 или выше.

Чтобы установить Emulator Suite:

  1. Установите Firebase CLI . Если вы не уже установлен Firebase CLI, установите его сейчас . Для использования Emulator Suite вам понадобится CLI версии 8.14.0 или выше. Вы можете проверить , какая версия установлена с помощью следующей команды:
    firebase --version
  2. Если вы еще не сделали этого, инициализировать текущий рабочий каталог в качестве проекта Firebase, следуя инструкциям на экране , чтобы указать , какие продукты использовать:
    firebase init
  3. Установите Emulator Suite. Эта команда запускает мастер настройки, который позволяет выбрать интересующие эмуляторы, загрузить соответствующие двоичные файлы эмулятора и установить порты эмулятора, если значения по умолчанию не подходят.
    firebase init emulators

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

Настроить Emulator Suite

При необходимости можно настроить сетевые порты эмуляторы и путь к определениям Правила безопасности в firebase.json файле:

  • Изменение эмулятора портов, запустив firebase init emulators или путем редактирования firebase.json вручную.
  • Измените путь к определениям правил безопасности путем редактирования firebase.json вручную.

Если вы не настроите эти параметры, эмуляторы будут прослушивать свои порты по умолчанию, а эмуляторы Cloud Firestore, Realtime Database и Cloud Storage будут работать с безопасностью открытых данных.

Командование Описание
эмуляторы инициализации Запустите мастер инициализации эмулятора. Определите эмуляторы для установки и, при необходимости, укажите настройки порта эмулятора. init emulators является неразрушающим; принятие значений по умолчанию сохранит текущую конфигурацию эмулятора.

Конфигурация порта

Каждый эмулятор привязывается к разному порту на вашем компьютере с предпочтительным значением по умолчанию.

Эмулятор Порт по умолчанию
Аутентификация 9099
Пользовательский интерфейс Emulator Suite 4000
Облачные функции 5001
База данных в реальном времени 9000
Cloud Firestore 8080
Облачное хранилище 9199
Хостинг Firebase 5000
Pub / Sub 8085

Конфигурация правил безопасности

Эмуляторы примут конфигурацию правил безопасности из database , firestore и storage ключей конфигурации в firebase.json .

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore" {
    "rules": "firestore.rules"
  },
  "storage" {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

Эмуляторы запуска

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

Командование Описание
эмуляторы: запуск Начало эмуляторы для продуктов Firebase сконфигурированных в firebase.json . Процессы эмулятора будут продолжать работать, пока не будут остановлены явным образом. Вызов emulators:start будет загружать эмуляторы в ~ / .cache / firebase / эмуляторы / , если они еще не установлены.
Флаг Описание
--only По желанию. Ограничьте запуск эмуляторов. Предоставьте список имен эмуляторов, разделенных запятыми, с указанием одного или нескольких из «auth», «database», «firestore», «functions», «hosting» или «pubsub».
--inspect-functions debug_port По желанию. Используйте с эмулятором облачных функций, чтобы включить отладку функций с помощью точки останова на указанном порту (или на порту по умолчанию 9229, если аргумент опущен). Обратите внимание, что когда установлен этот флаг, эмулятор Cloud Functions переключается в специальный режим сериализованного выполнения, в котором функции выполняются в одном процессе в последовательном (FIFO) порядке; это упрощает отладку функций, хотя поведение отличается от многопроцессного параллельного выполнения функций в облаке.
--export-on-exit= По желанию. Используйте с эмулятором аутентификации, Cloud Firestore, базы данных в реальном времени или облачного хранилища. Instruct эмулятора (ы) для экспорта данных в каталог , когда происходит отключение, как описано для emulators:export команды. Каталог экспорта может быть определен с этим флагом: firebase emulators:start --export-on-exit=./saved-data . Если --import используется, экспортный путь по умолчанию в то же самое; например: firebase emulators:start --import=./data-path --export-on-exit . Наконец, в случае необходимости, передавать различные пути каталогов к --import и --export-on-exit флаги.
--import= import_directory По желанию. Используйте с эмулятором аутентификации, Cloud Firestore, базы данных в реальном времени или облачного хранилища. Импорт данные , сохраненные с помощью --export-on-exit варианта загрузки или emulators:export команды бегущей аутентификации, Cloud Firestore, в реальное время базов данных или экземпляр эмулятора Cloud Storage. Любые данные в памяти эмулятора будут перезаписаны.
эмуляторы: EXEC scriptpath Запустите скрипт на scriptpath после запуска эмуляторов для продуктов Firebase сконфигурированных в firebase.json . Процессы эмулятора автоматически остановятся, когда скрипт завершит работу.
Флаг Описание
--only По желанию. Ограничьте запуск эмуляторов. Предоставьте список имен эмуляторов, разделенных запятыми, с указанием одного или нескольких из «firestore», «database», «functions», «hosting» или «pubsub».
--inspect-functions debug_port По желанию. Используйте с эмулятором облачных функций, чтобы включить отладку функций с помощью точки останова на указанном порту (или на порту по умолчанию 9229, если аргумент опущен). Обратите внимание, что когда установлен этот флаг, эмулятор Cloud Functions переключается в специальный режим сериализованного выполнения, в котором функции выполняются в одном процессе в последовательном (FIFO) порядке; это упрощает отладку функций, хотя поведение отличается от многопроцессного параллельного выполнения функций в облаке.
--export-on-exit= По желанию. Используйте с эмулятором аутентификации, Cloud Firestore, базы данных в реальном времени или облачного хранилища. Instruct эмулятора (ы) для экспорта данных в каталог , когда происходит отключение, как описано для emulators:export команды. Каталог экспорта может быть определен с этим флагом: firebase emulators:start --export-on-exit=./saved-data . Если --import используется, экспортный путь по умолчанию в то же самое; например: firebase emulators:start --import=./data-path --export-on-exit . Наконец, в случае необходимости, передавать различные пути каталогов к --import и --export-on-exit флаги.
--import= import_directory По желанию. Используйте с эмулятором аутентификации, Cloud Firestore, базы данных в реальном времени или облачного хранилища. Импорт данные , сохраненные с помощью --export-on-exit варианта загрузки или emulators:export команды бегущей аутентификации, Cloud Firestore, в реальное время базов данных или экземпляр эмулятора Cloud Storage. Все данные в памяти эмулятора будут перезаписаны.
--ui По желанию. Запустите пользовательский интерфейс эмулятора во время выполнения.

В firebase emulators:exec метод , как правило , больше подходит для непрерывных рабочих процессов интеграции.

Экспорт и импорт данных эмулятора

Вы можете экспортировать данные из эмуляторов аутентификации, Cloud Firestore, Realtime Database и Cloud Storage для использования в качестве общего базового набора данных. Эти наборы данных могут быть импортированы с использованием --import флаг, как описано выше.

эмуляторы: экспорт export_directory

Аутентификация, Облако Firestore, в режиме реального времени базы данных или эмулятор Cloud Storage. Экспортируйте данные из запущенного экземпляра Cloud Firestore, Realtime Database или эмулятора Cloud Storage. Указанный export_directory будет создан , если он уже не существует. Если указанный каталог существует, вам будет предложено подтвердить, что предыдущие данные экспорта должны быть перезаписаны. Вы можете пропустить эту подсказку , используя --force флаг. Каталог экспорта содержит получение данных файла манифеста, firebase-export-metadata.json .

Вы можете поручить эмуляторы для экспорта данных автоматически , когда они выключение с помощью --export-on-exit флагов , описанных выше.

Интегрируйте с вашей системой CI

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

Установка и настройка Emulator Suite с контейнерами в типичной настройке CI просты.

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

  • Установлены и кэшируются в JAR - файлы ~/.cache/firebase/emulators/ .

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

Создайте токен аутентификации (только в эмуляторе хостинга)

Если непрерывные рабочие процессы интеграции полагаются на Firebase хостинг, то вам нужно будет войти в систему, используя маркер для запуска firebase emulators:exec . Остальные эмуляторы не требуют входа в систему.

Чтобы создать маркер, запустить firebase login:ci на вашей локальной среде; это не должно выполняться из системы CI. Следуйте инструкциям для аутентификации. Вам нужно будет выполнить этот шаг только один раз для каждого проекта, поскольку токен будет действителен во всех сборках. Токен следует рассматривать как пароль; убедитесь, что это держится в секрете.

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

В крайнем случае, вы можете просто включить токен в свой сценарий сборки, но убедитесь, что у ненадежных сторон нет доступа. Для этого жесткого закодированы подход, вы можете добавить --token "YOUR_TOKEN_STRING_HERE" в firebase emulators:exec команду.

Используйте REST API-интерфейс Emulator Hub

Список запущенных эмуляторов

Чтобы получить список запущенных эмуляторов, отправить GET запрос к /emulators конечная точка Emulator Hub.

curl localhost:4400/emulators

Результатом будет объект JSON, в котором перечислены все запущенные эмуляторы и их конфигурация хоста / порта, например:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

Включение / отключение триггеров фоновых функций

В некоторых ситуациях вам может потребоваться временно отключить локальные триггеры функций. Например , вы можете удалить все данные в эмуляторе Cloud Firestore , не вызывая каких - либо onDelete функции, которые работают в Functions эмулятора Cloud.

Чтобы временно отключить функцию локальных триггеров, отправить PUT запрос к /functions/disableBackgroundTriggers оконечным эмулятора Hub.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

Результатом будет объект JSON с подробным описанием текущего состояния.

{
  "enabled": false
}

Для того, чтобы дать возможность местным спусковые функции после того, как они были отключены, отправить PUT запрос к /functions/enableBackgroundTriggers оконечным эмулятора Hub.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

Результатом будет объект JSON с подробным описанием текущего состояния.

{
  "enabled": true
}

Интеграция SDK эмулятора

В таблицах в этом разделе указано, какие эмуляторы поддерживаются клиентским и административным SDK. Будущая поддержка средств Эмулятор планируется , но пока не имеется.

Доступность клиентского SDK

Android Платформы Apple Интернет Пользовательский интерфейс Firebase
Android
Пользовательский интерфейс Firebase
iOS
Пользовательский интерфейс Firebase
Интернет
База данных в реальном времени 19.4.0 7.2.0 8.0.0 6.4.0 Будущее N / A
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 Будущее N / A
Аутентификация 20.0.0 7.0.0 8.0.0 7.0.0 Будущее Будущее
Облачное хранилище 20.0.0 8.0.0 8.4.0 N / A N / A N / A
Облачные функции 19.1.0 7.2.0 8.0.0 N / A N / A N / A
Хостинг N / A N / A N / A N / A N / A N / A

Доступность Admin SDK

Узел Джава Python Идти
База данных в реальном времени 8.6.0 6.10.0 2.18.0 Будущее
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
Аутентификация 9.3.0 Будущее Будущее Будущее
Облачное хранилище 9.8.0 Будущее Будущее Будущее
Облачные функции N / A N / A N / A N / A
Хостинг N / A N / A N / A N / A