Управление конфигурациями проекта с помощью манифеста расширений

Манифест расширений — это список экземпляров расширений и их конфигураций. С помощью манифеста вы можете:

  • Поделитесь своей конфигурацией расширений с другими
  • Скопируйте конфигурацию расширений между разными проектами (например, из промежуточного проекта в рабочий проект).
  • Разверните все ваши расширения одновременно
  • Проверьте, как ваши расширения работают с вашим приложением, используя Firebase Local Emulator Suite.
  • Зафиксируйте конфигурацию ваших расширений в системе управления версиями
  • Включите расширения в конвейер CI/CD

Манифест расширений состоит из двух частей:

  • Раздел extensions вашего firebase.json , который представляет собой сопоставление идентификатора экземпляра со ссылкой на версию расширения. Например:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env , содержащие конфигурацию для каждого из ваших экземпляров расширения, в подкаталоге extensions/ вашего каталога проекта Firebase. Например, экземпляр storage-resize-images может иметь файл .env , подобный следующему:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

Создать манифест расширений

Существует три способа создания манифеста расширений:

  • Управляйте своим манифестом расширений с помощью интерфейса командной строки Firebase
  • Экспорт конфигурации расширений проекта
  • Отредактируйте файлы манифеста вручную

Ниже описаны первые два метода.

Управляйте своим манифестом расширений с помощью интерфейса командной строки Firebase

Вы можете запускать большинство команд ext: Firebase CLI с параметром --local для обновления манифеста расширений без фактического изменения текущей конфигурации проекта.

Например:

firebase ext:install --local firebase/firestore-bigquery-export

Выполнение приведенной выше команды предложит вам настроить последнюю версию расширения firebase/firestore-bigquery-export и сохранить конфигурацию в манифесте, но не развернет конфигурацию в вашем проекте.

Вот еще несколько примеров команд, которые изменяют манифест расширений:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

Экспорт конфигурации расширений проекта

Чтобы сохранить текущую конфигурацию расширений проекта в манифест, выполните следующие действия:

  1. Если вы еще этого не сделали, настройте интерфейс командной строки Firebase.
  2. Из приглашения оболочки перейдите в каталог проекта. (Каталог вашего проекта содержит файл firebase.json ).
  3. Запустите команду ext:export :
    firebase ext:export

Команда ext:export добавит раздел extensions в файл firebase.json . Кроме того, команда ext:export создает каталог extensions , содержащий файл .env для каждого установленного вами экземпляра расширения. Эти файлы содержат параметры конфигурации для каждого экземпляра.

Протестируйте конфигурацию расширений с помощью Firebase Local Emulator Suite.

После того как вы добавили несколько экземпляров расширений в манифест расширений, вы можете протестировать их с помощью Local Emulator Suite.

  1. Установите и настройте Local Emulator Suite .

  2. Запустите пакет локального эмулятора :

    • Чтобы запустить Emulator Suite в интерактивном режиме, запустите: firebase emulators:start
    • Чтобы запустить Emulator Suite и выполнить тестовый скрипт, запустите: firebase emulators:exec my-test.sh

Теперь, если у вас есть экземпляры расширений, указанные в манифесте, Local Emulator Suite загрузит исходный код этих расширений в ~/.cache/firebase/extensions . После того, как они будут загружены, запустится Local Emulator Suite, и вы сможете активировать любые фоновые функции расширений и подключить свое приложение к набору Emulator, чтобы проверить их интеграцию с вашим приложением.

Развертывание конфигурации расширений в проекте

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

Чтобы развернуть манифест расширений:

  1. В приглашении оболочки перейдите в каталог, содержащий сохраненную конфигурацию расширений. (Это каталог, содержащий firebase.json . Если вы только что запустили ext:export , вы уже находитесь в правильном каталоге.)
  2. Запустите команду deploy . Если вы хотите развернуть расширения в проекте, отличном от текущего, также укажите --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Команда deploy проверит конфигурацию каждого экземпляра, спросит, хотите ли вы удалить какие-либо экземпляры расширения из вашего целевого проекта, которые не указаны в firebase.json , а затем развернет все ваши экземпляры расширения.

Конфигурации расширений для конкретных проектов

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

  • Поместите значения параметров, которые различаются между проектами, в extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • Поместите значения общих параметров в extensions/ EXTENSION_INSTANCE_ID .env .

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

  • Поместите несекретные параметры, которые вы хотите использовать во время эмуляции, в extensions/ EXTENSION_INSTANCE_ID .env.local
  • Поместите секретные значения параметров в extensions/ EXTENSION_INSTANCE_ID .secret.local