Развертывание целевых объектов

Цели развертывания – это краткие идентификаторы (которые вы задаете сами) ресурсов Firebase в вашем проекте Firebase, например сайта Hosting с уникальными статическими объектами или группы экземпляров Realtime Database с одинаковыми правилами безопасности.

Целевые объекты развертывания полезны, если у вас несколько сайтов Hosting, несколько сегментов Cloud Storage или несколько экземпляров Realtime Database. С помощью целевых объектов развертывания интерфейс командной строки Firebase может развертывать настройки для определенного ресурса Firebase или группы ресурсов в вашем проекте, например:

  • Конфигурация хостинга для каждого из ваших сайтов Hosting.
  • Статические объекты из каталога проекта для каждого из ваших сайтов Hosting.
  • Правила безопасности, используемые несколькими экземплярами Realtime Database или несколькими сегментами Cloud Storage

Чтобы настроить целевое развертывание:

  1. Примените TARGET_NAME к целевому ресурсу Firebase или группе ресурсов Firebase.
  2. В файле firebase.jsonукажите связанный файл TARGET_NAME при настройке каждого ресурса или группы ресурсов.

Когда вы выполняете команды CLI Firebase (например, firebase deploy), CLI Firebase сопоставляет каждый TARGET_NAME с соответствующими ресурсами Firebase. Затем интерфейс командной строки передает в проект Firebase настройки для каждого ресурса.

Как настроить целевые платформы для ресурсов Firebase

С помощью интерфейса командной строки Firebase примените TARGET_NAME (краткий идентификатор, который вы определяете самостоятельно) к ресурсу Firebase или группе ресурсов Firebase. Firebase поддерживает цели развертывания для:

Настройки целевых платформ хранятся в файле .firebaserc в каталоге проекта, поэтому их нужно задавать только один раз для каждого проекта.

Как настроить целевые объекты развертывания для Hosting

Чтобы создать целевое местоположение для развертывания и применить TARGET_NAME к сайту Hosting, выполните следующую команду CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Где находятся параметры:

  • TYPE – тип ресурса Firebase.

    • Для сайтов Firebase Hosting используйте hosting.
  • TARGET_NAME – уникальное название сайта Hosting, на который вы развертываете приложение.

  • RESOURCE_IDENTIFIER – SITE_ID для Hosting сайта как указано в вашем проекте Firebase

Например, если вы создали два сайта (myapp-blog и myapp-app) в проекте Firebase, то можете применить к каждому из них уникальный TARGET_NAME (blog и app соответственно), выполнив следующие команды:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Как настроить целевые развертывания для Cloud Storage или Realtime Database

Чтобы создать целевой объект развертывания и применить TARGET_NAME к набору ресурсов Cloud Storage или Realtime Database, выполните следующую команду CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Где находятся параметры:

  • TYPE – тип ресурса Firebase.

    • Для сегментов Cloud Storage используйте storage.
    • Для экземпляров Realtime Database используйте database.
  • TARGET_NAME – уникальное название ресурса или группы ресурсов, к которым применяются одни и те же правила безопасности.

  • RESOURCE_IDENTIFIER – идентификаторы ресурсов в вашем проекте Firebase (например, названия сегментов хранилища или идентификаторы экземпляров базы данных), для которых действуют одни и те же правила безопасности.

Например, вы можете применить TARGET_NAME main к группе из трех региональных сегментов Cloud Storage (у которых одинаковые правила безопасности), выполнив следующую команду:

firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja

Обратите внимание, что myproject.firebasestorage.app – это идентификатор сегмента по умолчанию, а myproject-eu и myproject-ja – два дополнительных сегмента, созданных в проекте Firebase.

Как настроить файл firebase.json для использования целей развертывания

После того как вы настроите целевые объекты развертывания для ресурсов Firebase, укажите каждую примененную TARGET_NAME в файле конфигурации firebase.json:

  1. Создайте массив объектов конфигурации для каждого ресурса Firebase TYPE (hosting, storage или database).
  2. В массивах укажите target (используя TARGET_NAME) и задайте настройки для связанного ресурса Firebase или группы ресурсов.

Если в вашем проекте Firebase два сайта Hosting и три сегмента Cloud Storage (с одинаковыми правилами безопасности), файл firebase.json будет выглядеть так:

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Если у вас несколько конфигураций ресурсов, вы можете создать несколько целевых объектов развертывания и указать каждый из них в файле firebase.json. Все связанные ресурсы будут развернуты вместе при выполнении команды firebase deploy.

Как управлять целевыми сервисами для развертывания

Настройки целевых платформ хранятся в файле .firebaserc в каталоге проекта. Вы можете управлять целевыми платформами для развертывания проекта, выполнив любую из следующих команд в корневом каталоге проекта.

Команда Описание
firebase target Перечисляет целевые объекты развертывания для текущего каталога проекта.
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Удаляет ресурс из целевого объекта, которому он был назначен.
firebase target:clear \
TYPE TARGET_NAME
Удаляет все ресурсы или сайт Hosting из указанного целевого объекта.

Команды target:remove и target:clear автоматически обновляют настройки deploy target в файле .firebaserc в каталоге проекта.

Тестирование перед развертыванием

Выполните любую из следующих команд в корневом каталоге проекта.

Команда Описание
firebase emulators:start Эмулирует все настроенные ресурсы в каталоге проекта.
firebase emulators:start \
--only hosting:TARGET_NAME
Эмулирует только контент и конфигурацию Hosting указанного сайта Hosting.
firebase emulators:start \
--only storage:TARGET_NAME
Эмулирует только файл правил для указанной цели Cloud Storage.
firebase emulators:start \
--only database:TARGET_NAME
Эмулирует только файл правил для указанной цели Realtime Database.

Подробнее о том, как настроить и использовать Firebase Local Emulator Suite…

Как развернуть определенные ресурсы Firebase

Выполните любую из следующих команд в корневом каталоге проекта.

Команда Описание
firebase deploy Создает выпуск всех развертываемых ресурсов в каталоге проекта.
firebase deploy \
--only hosting:TARGET_NAME
Развертывает только контент и конфигурацию Hosting указанного сайта Hosting на рабочем канале сайта.
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Развертывает только контент и конфигурацию Hosting указанного сайта Hosting в канале предварительного просмотра для сайта.
firebase deploy \
--only storage:TARGET_NAME
Развертывает только файл правил для указанной цели Cloud Storage.
firebase deploy \
--only database:TARGET_NAME
Развертывает только файл правил для указанной цели Realtime Database