В большинстве случаев мы рекомендуем использовать автоматическое развертывание или развертывание, запускаемое вручную, в консоли Firebase. Однако вам может понадобиться более сложный процесс развертывания. App Hosting предлагает несколько вариантов развертывания.
Развертывание из источника
Развертывание из источника позволяет отправлять исходный код и конфигурацию приложения непосредственно в App Hosting без постоянного подключения к GitHub.
При развертывании из источника App Hosting загружает исходный код в сегмент Google Cloud Storage, выполняет команду сборки фреймворка в Cloud Build и развертывает скомпилированные артефакты в Cloud Run и Cloud CDN. Для развертывания локальных источников и GitHub используется один и тот же процесс сборки. Если в вашем проекте есть файл .gitignore, файлы и папки, перечисленные в нем, исключаются из развертывания.
Вы можете выполнить развертывание из локального источника с помощью CLI Firebase или консоли Firebase.
Необходимые разрешения IAM и настройка инфраструктуры
Поскольку и Firebase CLI, и консоль Firebase используют одну и ту же серверную инфраструктуру для хранения и создания архивов исходного кода, требования к разрешениям IAM для обоих способов развертывания одинаковы.
Точные требования зависят от того, развертываете ли вы приложение в определенном регионе впервые. Дополнительную информацию о разрешениях можно найти в обзоре Firebase IAM и в статье о разрешениях для хостинга приложений Firebase.
Разрешения для первоначальной настройки (первого развертывания в определенном месте)
Когда в местоположении проекта впервые инициируется развертывание локального источника, 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).
Развертывание из источника с помощью интерфейса командной строки Firebase
Firebase CLI версии 14.4.0 и более поздних позволяет отправлять исходный код и конфигурации приложения непосредственно с локального компьютера в Firebase. Это удобно, если вы уже управляете другими развертываниями Firebase (например, правилами безопасности или функциями) и хотите развернуть веб-приложение и серверные сервисы вместе с помощью одной команды CLI.
Требования
- Ваши проекты должны быть в плане Blaze.
- У вас должна быть установлена версия 14.4.0 или более поздняя версия Firebase CLI.
Этапы развертывания
- Выполните команду
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.
Загрузить архив можно при первоначальном создании серверной части или при создании вручную развертывания на существующей серверной части, в том числе на той, которая была изначально развернута с помощью интерфейса командной строки Firebase.
Поддерживаемые форматы
Загрузчик консоли поддерживает два формата сжатых архивов:
.zip.tgz
Эти форматы указаны в описании загрузчика файлов.
Этапы развертывания
Вариант А. При первоначальной регистрации на платформе
- Выберите источник. В мастере создания на странице "Как вы хотите импортировать приложение?" выберите Загрузить ZIP-файл.
- Подготовка к регистрации. При нажатии кнопки "Далее" запускается фоновый процесс подготовки, который последовательно включает Storage API, проверяет правильность настроенных ролей и обновляет сегмент. В интерфейсе появится индикатор загрузки с динамическими сообщениями о статусе: "Включение API…" Проверка разрешений… и Подготовка сегмента….
- Обработка ошибок и ограничения. Если какой-либо этап подготовки не будет выполнен (например, пользователь без роли владельца получит ошибку
403 PERMISSION_DENIEDиз-за недостаточных разрешений IAM), в интерфейсе появится предупреждение с инструкцией обратиться к владельцу проекта. Навигация по шагам заблокирована, а кнопки "Далее" и "Завершить и развернуть" отключены, пока проблема не будет устранена.
- Обработка ошибок и ограничения. Если какой-либо этап подготовки не будет выполнен (например, пользователь без роли владельца получит ошибку
- Загрузка файлов. После успешного завершения подготовки выберите или перетащите архивный файл в компонент загрузки файлов.
Настроить параметры. Укажите корневой каталог приложения (по умолчанию
/).Нажмите Завершить и развернуть. Отдельная кнопка "Завершить" отключена для загрузок ZIP-архивов, поскольку загрузка архива – это однократное действие, за которым должно сразу же следовать развертывание, чтобы обеспечить работу серверной части.
Вариант Б. Создание развертывания вручную
- Открыть диалоговое окно. На панели управления App Hosting нажмите Создать развертывание.
- Выберите источник. Нажмите Загрузить ZIP-архив в диалоговом окне. Если у внутреннего сервиса нет подключения к GitHub, вариант "GitHub" будет отключен.
- Подготовка и загрузка. При выборе этого варианта запускается тот же процесс подготовки в фоновом режиме (Включение API…, Проверка разрешений… и Подготовка сегмента…. После этого перетащите или выберите файл архива с помощью загрузчика, укажите корневой каталог приложения и нажмите Развернуть, чтобы запустить сборку и развертывание.
Как выполнить развертывание с помощью Terraform
Если вам нужен более полный контроль над процессом сборки и развертывания, вы можете использовать Terraform. Terraform позволяет определять ресурсы App Hosting и управлять ими с помощью декларативных файлов конфигурации, а также развертывать собственные готовые образы контейнеров непосредственно в App Hosting, а не полагаться на App Hosting для сборки из исходного кода.
Если вы раньше не работали с Terraform, ознакомьтесь со статьей Как начать работу с Terraform и Firebase. Если вы уже знакомы с Terraform, то можете начать работу с примерами файлов конфигурации и другими ресурсами App Hosting.
Как настроить подключение к GitHub для CI/CD
Вы можете подключить репозиторий GitHub в любое время на вкладке Развертывание в настройках бэкэнда в консоли Firebase. Это позволяет развернуть прототип приложения из локальной среды, а затем перейти к автоматизированному конвейеру CI/CD, когда вы будете готовы.
Развертывание с помощью ИИ-инструментов
Мы прекратим поддержку Firebase Studio 22 марта 2027. Это не повлияет на ваши серверные части App Hosting, но кнопка Опубликовать в Firebase Studio будет удалена. Чтобы и дальше публиковать обновления без изменения URL, перенесите проект. Подробнее о том, как перейти на GA4…