Локальное тестирование развертывания вашего приложения

Вы можете выполнить локальное тестирование своего приложения перед развертыванием App Hosting с помощью эмулятора App Hosting , который является частью пакета локальных эмуляторов Firebase.

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

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

Что я могу делать с помощью эмулятора App Hosting ?

Эмулятор App Hosting позволяет тестировать и совершенствовать веб-приложения локально, точно копируя производственную среду. Это может упростить процесс разработки и повысить качество веб-приложений, созданных с помощью Firebase и развернутых на App Hosting .

Эмулятор App Hosting :

  1. Позволяет запускать веб-приложение локально, используя переменные среды, определенные в файлах конфигурации apphosting.yaml
  2. Можно экспортировать секреты, которые вы сохранили в различных средах App Hosting , что позволяет моделировать приложения в разных средах.
  3. Может использоваться вместе с другими эмуляторами Firebase. Если вы используете Firestore, Auth или любой другой эмулятор, Local Emulator Suite гарантирует, что эти эмуляторы запускаются раньше, чем эмулятор App Hosting .

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

Для начала установите и инициализируйте Local Emulator Suite , как описано в разделе Установка, настройка и интеграция Local Emulator Suite . Помимо любых других эмуляторов Firebase, которые вы хотите настроить, обязательно выберите App Hosting Emulator . Интерфейс командной строки запросит у вас некоторые значения эмулятора App Hosting , в том числе:

  • Корневой каталог вашего приложения относительно проекта; это важно, если вы используете монорепозитории с App Hosting .
  • Хотите ли вы экспортировать секреты для определенных сред .
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

Любые значения, которые вы указываете в этом процессе настройки, используются для обновления конфигурации эмулятора App Hosting в firebase.json . Вы также можете настроить эмулятор хостинга приложений, обновив файл firebase.json напрямую. Схема эмулятора хостинга приложений:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommandOverride автоматически генерируется и устанавливается при инициализации эмулятора. Если этот параметр не указан, эмулятор обнаружит и запустит команду dev вашего менеджера пакетов.
  • rootDirectory используется для поддержки настроек проекта монорепо. Если ваше веб-приложение находится в подкаталоге, вам необходимо указать путь к этому каталогу относительно корня (расположение firebase.json ).

Управление эмуляцией

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

Экспортируйте секреты для локального моделирования различных сред.

Если вы работаете с несколькими средами и хотите локально имитировать различные среды приложений, вам могут понадобиться секреты соответствующих сред. Вы можете экспортировать секреты для конкретной среды с помощью команды CLI apphosting:config:export (альтернативно, как показано в разделе Настройка эмулятора , вы можете дополнительно импортировать секреты во время инициализации эмулятора).

Эта команда требует, чтобы вы выбрали одну из доступных сред App Hosting вашего проекта. Конфигурация App Hosting для конкретной среды (например, «apphosting.staging.yaml») и базовая конфигурация App Hosting («apphosting.yaml») объединяются, при этом конфигурация для конкретной среды имеет приоритет. Если в обеих конфигурациях существуют секреты с одинаковым именем, используется секрет из конфигурации, специфичной для среды.

Например, чтобы экспортировать секреты в эмулятор из промежуточной среды:

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

Ваш файл apphosting.local.yaml обновляется (или создается, если он не существует) с использованием экспортированных секретов в качестве переменных среды. Поскольку теперь файл содержит конфиденциальную информацию в виде обычного текста, он будет автоматически добавлен в ваш файл .gitignore , чтобы предотвратить его случайное занесение в ваш репозиторий исходного кода.

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

firebase emulators:start

Это запустит все эмуляторы, определенные в вашем файле firebase.json включая эмулятор App Hosting .