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

Цели развертывания — это идентификаторы с короткими именами (которые вы определяете самостоятельно) для ресурсов 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 при настройке параметров для каждого ресурса или группы ресурсов.

Когда вы запускаете команды Firebase CLI (например, firebase deploy ), Firebase CLI связывает каждый TARGET_NAME со связанными с ним ресурсами Firebase. Затем CLI передает вашему проекту 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_IDENTIFIERSITE_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. Создайте массив объектов конфигурации для каждого TYPE ресурса Firebase ( 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 автоматически обновляют настройки цели развертывания в файле .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