Развертывание целей

Цели развертывания — это идентификаторы с короткими именами (которые вы определяете самостоятельно) для ресурсов Firebase в вашем проекте Firebase, например хостинг-сайт с уникальными статическими ресурсами или группа экземпляров базы данных реального времени, которые используют одни и те же правила безопасности.

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

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

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

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

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

Настройте цели развертывания для ваших ресурсов Firebase

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

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

Настройка целей развертывания для хостинга

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

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Где параметры:

  • TYPE — соответствующий тип ресурса Firebase.

    • Для сайтов хостинга Firebase используйте hosting .
  • TARGET_NAME — уникальное имя хостинга, на котором вы развертываете

  • RESOURCE_IDENTIFIERSITE_ID хостинг-сайта , указанный в вашем проекте Firebase.

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

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

Настройте цели развертывания для облачного хранилища или базы данных реального времени.

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

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

Где параметры:

  • TYPE — соответствующий тип ресурса Firebase.

    • Для сегментов Cloud Storage используйте storage .
    • Для экземпляров базы данных реального времени используйте database .
  • TARGET_NAME — уникальное имя ресурса или группы ресурсов с общими правилами безопасности.

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

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

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

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

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

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

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

Продолжая приведенные выше примеры, где ваш проект Firebase имеет два сайта хостинга и три сегмента облачного хранилища (с одинаковыми правилами безопасности), ваш файл 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
Удаляет все ресурсы или хостинг-сайт из указанной цели.

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

Протестируйте локально перед развертыванием

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

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

Узнайте больше о настройке и использовании пакета локального эмулятора Firebase .

Развертывание определенных ресурсов Firebase

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

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