В большинстве случаев мы рекомендуем использовать автоматическое развертывание или развертывание, запускаемое вручную, в консоли Firebase. Однако вам может потребоваться более индивидуальный процесс развёртывания. App Hosting предлагает несколько вариантов развертывания.
Развертывание из источника
Развертывание из источника позволяет отправлять исходный код и конфигурацию приложения напрямую в App Hosting без постоянного подключения к GitHub.
При развертывании из источника App Hosting загружает исходный код в сегмент Google Cloud Storage, выполняет команду сборки фреймворка в Cloud Build и развертывает скомпилированные артефакты в Cloud Run и Cloud CDN. Для развертывания локального источника используется тот же процесс сборки, что и для развертывания GitHub. Если в вашем проекте есть файл .gitignore, то перечисленные в нем файлы и папки исключаются из развертывания.
Вы можете выполнить развертывание из локального источника с помощью CLI Firebase или консоли Firebase.
Необходимые разрешения IAM и настройка инфраструктуры
Поскольку CLI Firebase и консоль Firebase используют одну и ту же инфраструктуру для хранения и сборки архивов исходного кода, к обоим методам развертывания применяются одинаковые требования к разрешениям IAM.
Точные требования зависят от того, развертываете ли вы приложение в определенном местоположении (регионе) впервые. Дополнительную информацию о разрешениях можно найти в обзоре Firebase IAM и в статье Разрешения Firebase App Hosting.
Разрешения для первоначальной настройки (первое развертывание в местоположении)
Когда в местоположении проекта впервые инициируется развертывание локального источника, App Hosting должен подготовить сегмент GCS для хранения ваших архивов и предоставить агенту сервиса App Hosting доступ к ним. Поскольку это административные задачи на уровне проекта, для их выполнения требуются разрешения владельца проекта или администратора IAM. Пользователь с базовой ролью редактора или читателя не сможет выполнить эту начальную настройку и будет заблокирован.
Для этого требуются следующие разрешения:
- Включить Storage API:
serviceusage.services.enable - Создайте исходный сегмент:
storage.buckets.createиstorage.buckets.list. - Настройте агент сервиса.
resourcemanager.projects.setIamPolicy, чтобы предоставить App Hosting доступ на чтение (roles/storage.objectViewer). Это позволит получать загруженный код во время сборок.
При первоначальном развертывании сегмент GCS создается с 30-дневным жизненным циклом, после чего он удаляется. Однако вы можете изменить этот срок в консоли Cloud, выбрав Cloud Storage -> Buckets (Сегменты) -> Lifecycle (Жизненный цикл) -> Rules (Правила). Подробнее об управлении жизненными циклами объектов…
Разрешения для последующих развертываний (после инициализации местоположения)
После того как для местоположения будут инициализированы исходный сегмент и привязки ролей (с помощью первоначального развертывания CLI или настройки консоли), обычные разработчики, редакторы или администраторы App Hosting смогут развертывать обновления. Для обычного развертывания права администратора на уровне проекта не требуются.
К активным разрешениям на развертывание относятся:
- Проверить сегмент:
storage.buckets.list - Загрузить архив с исходным кодом:
storage.objects.create - Запуск сборки и выпуск. Стандартные разрешения App Hosting (
apphosting.builds.createиapphosting.rollouts.create).
Развертывание из источника с помощью CLI Firebase
CLI Firebase версии 14.4.0 и выше позволяет отправлять исходный код и конфигурации приложения непосредственно с локального компьютера в Firebase. Это удобно, если вы уже управляете другими развертываниями Firebase (например, правилами безопасности или функциями) и хотите развернуть веб-приложение и бэкенд-службы вместе с помощью одной команды CLI.
Требования
- Ваши проекты должны использовать тарифный план Blaze.
- У вас должна быть установлена версия firebase-tools 14.4.0 или более поздняя.
Этапы развертывания
- Выполните команду
firebase init apphostingв каталоге локального проекта. - Когда появится запрос, выберите Использовать существующий проект и укажите нужный проект Firebase.
- Выберите новый или существующий сервер для развертывания. На этом шаге настраивается развертывание App Hosting для локального каталога и запрашиваются сведения о конфигурации.
- Идентификатор бэкенда для развертывания
- Регион для развертывания, если создается новая серверная служба.
- Путь к корневому каталогу кода приложения.
- Предпочитаемая среда выполнения Node.js. Если вы выберете среду выполнения с версией, то автоматические обновления базового образа (ABIU) будут автоматически применять исправления системы безопасности к вашей базовой среде.
- App Hosting сохраняет параметры развертывания в файле
firebase.json, создавая его в проекте в локальном хранилище браузера, если он ещё не существует. После успешного завершения инициализации запуститеfirebase deploy, чтобы развернуть исходный код.
Пример файла firebase.json
{
"apphosting": [
{
"backendId": "my-backend",
// rootDir specifies the directory containing the app to deploy, but the entire
// parent directory of firebase.json will be zipped and uploaded to ensure that
// dependencies outside of the app directory will be available at build time.
"rootDir": "./my-app",
"ignore": [
"node_modules",
".git",
"firebase-debug.log",
"firebase-debug.*.log",
"functions"
]
}
]
}
Развертывание с помощью консоли Firebase (загрузка ZIP-архива)
Консоль Firebase предоставляет графический интерфейс для развертывания приложений путем непосредственной загрузки сжатого архива исходного кода. Это альтернатива подключению к GitHub, если вы не хотите использовать GitHub или предпочитаете другую настройку CI/CD.
Загрузка архива может выполняться во время первоначального создания бэкенда или при создании развертывания вручную в существующем бэкенде, включая бэкенды, изначально развернутые с помощью CLI Firebase.
Поддерживаемые форматы
Загрузчик в консоли проверяет и принимает два формата сжатых архивов:
.zip.tgz
Эти форматы явно указаны в описании загрузчика файлов.
Этапы развертывания
Вариант А. Во время первоначальной регистрации бэкенда
- Выберите источник. В мастере создания серверной части на шаге "Как вы хотите импортировать приложение?" выберите Загрузить ZIP-файл.
- Подготовка к интеграции. Нажатие кнопки "Далее" запускает фоновый процесс подготовки, который последовательно включает Storage API, проверяет правильность настройки ролей и обновляет сегмент. В интерфейсе появится индикатор загрузки с динамическими сообщениями о статусе: Enabling API... (Включение API...), Checking permissions… (Проверка разрешений…) и Preparing bucket… (Подготовка сегмента…).
- Обработка ошибок и ограничения. Если какой-либо шаг подготовки не удается выполнить (например, пользователь, не являющийся владельцем, получает ошибку
403 PERMISSION_DENIEDиз-за недостаточных разрешений IAM), в интерфейсе появляется специальное предупреждение с инструкцией обратиться к владельцу проекта. Навигация по пошаговому руководству строго заблокирована, а кнопка "Далее" и финальная кнопка "Завершить и развернуть" остаются отключенными, пока проблема не будет решена.
- Обработка ошибок и ограничения. Если какой-либо шаг подготовки не удается выполнить (например, пользователь, не являющийся владельцем, получает ошибку
- Загрузите файлы. После успешного завершения подготовки выберите или перетащите архивный файл в компонент загрузки файлов.
Configure Settings (Задать настройки). Укажите App root directory (Корневой каталог приложения) (по умолчанию –
/).Нажмите Finish and Deploy (Завершить и развернуть). Отдельная кнопка Finish (Завершить) недоступна для ZIP-архивов, поскольку их загрузка – это однократное действие, после которого необходимо сразу выполнить развертывание, чтобы обеспечить работу бэкенда.
Вариант Б. Создание внедрения вручную
- Откройте диалоговое окно. На панели управления App Hosting нажмите Create rollout (Создать развертывание).
- Выберите источник. В диалоговом окне выберите Загрузить ZIP-файл. Если у бэкенда нет подключения к GitHub, вариант GitHub будет недоступен.
- Подготовка и загрузка. Выбор запускает тот же процесс подготовки в фоновом режиме (Включение API…, Checking permissions... (Проверка разрешений...) и Preparing bucket... (Подготовка сегмента...). После этого перетащите или выберите архивный файл с помощью загрузчика, укажите корневой каталог приложения и нажмите Развернуть, чтобы запустить сборку и развертывание.
Развертывание с помощью Terraform
Если вам нужен более высокий уровень контроля над процессом сборки и развернутой средой, вы можете выполнить развертывание с помощью Terraform. Terraform позволяет определять ресурсы App Hosting и управлять ими с помощью декларативных файлов конфигурации, а также развертывать собственный готовый образ контейнера непосредственно в App Hosting, не полагаясь на App Hosting для сборки из исходного кода.
Если вы раньше не работали с Terraform, прочитайте статью Начало работы с Terraform и Firebase. Если вы уже знакомы с Terraform, то можете начать работу с примерами файлов конфигурации и другими ресурсами App Hosting.
Как настроить подключение к GitHub для непрерывной интеграции и поставки
Вы можете в любой момент подключить репозиторий GitHub на вкладке Deployment (Развертывание) в настройках бэкенда в консоли Firebase. Это позволяет развернуть прототип приложения из локальной среды, а затем перейти к автоматизированному конвейеру CI/CD, когда вы будете готовы.
Развертывание с помощью ИИ-инструментов
22 марта 2027 г. мы прекратим поддержку Firebase Studio. Это не повлияет на серверные части App Hosting, но кнопка Опубликовать в Firebase Studio будет удалена. Чтобы продолжить публикацию обновлений без изменения URL, перенесите проект. Подробнее о переносе…