Другие способы развертывания в App Hosting

В большинстве случаев мы рекомендуем использовать автоматическое развертывание или развертывание, запускаемое вручную, из консоли 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

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

Требования

  • Ваши проекты должны использовать тарифный план Blaze.
  • У вас должна быть установлена версия firebase-tools 14.4.0 или более поздняя.

Этапы развертывания

  1. Выполните команду firebase init apphosting в локальном каталоге проекта.
  2. Когда появится запрос, выберите Использовать существующий проект и укажите нужный проект Firebase.
  3. Выберите новый или существующий серверный компонент для развертывания. На этом шаге настраивается развертывание App Hosting для локального каталога и запрашиваются сведения о конфигурации.
    • Идентификатор бэкенда для развертывания
    • Регион для развертывания, если создается новая серверная служба.
    • Путь к корневому каталогу кода приложения.
    • Предпочитаемая среда выполнения Node.js. Выбор среды выполнения с версией позволяет автоматически обновлять базовый образ, чтобы автоматически применять исправления системы безопасности к базовой среде.
  4. 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

Эти форматы явно указаны в описании загрузчика файлов.

Этапы развертывания

Вариант А. Во время первоначальной регистрации в бэкенде
  1. Выберите источник. В мастере создания серверной части на шаге "Как вы хотите импортировать приложение?" выберите Загрузить ZIP-файл.
  2. Подготовка к интеграции. Нажатие кнопки "Далее" запускает фоновый процесс подготовки, который последовательно включает Storage API, проверяет правильность настройки ролей и обновляет сегмент. В интерфейсе появится индикатор загрузки с динамическими сообщениями о статусе: Enabling API... (Включение API...), Checking permissions... (Проверка разрешений...) и Preparing bucket... (Подготовка сегмента...).
    • Обработка ошибок и ограничения. Если какой-либо шаг подготовки не удается выполнить (например, пользователь, не являющийся владельцем, получает ошибку 403 PERMISSION_DENIED из-за недостаточных разрешений IAM), в интерфейсе появляется предупреждение с рекомендацией обратиться к владельцу проекта. Навигация по пошаговому руководству строго заблокирована, а кнопка "Далее" и финальная кнопка "Завершить и развернуть" остаются неактивными, пока проблема не будет решена.
  3. Загрузите файлы. После успешного завершения подготовки выберите или перетащите архивный файл в компонент загрузки файлов.
  4. Configure Settings (Задать настройки). Укажите App root directory (Корневой каталог приложения) (по умолчанию – /).

  5. Нажмите Finish and Deploy (Завершить и развернуть). Кнопка Finish (Завершить) недоступна для ZIP-архивов, поскольку загрузка архива – это однократное действие, после которого необходимо сразу выполнить развертывание, чтобы обеспечить работу серверной части.

Вариант Б. Создание внедрения вручную
  1. Откройте диалоговое окно. На панели управления App Hosting нажмите Create rollout (Создать развертывание).
  2. Выберите источник. В диалоговом окне выберите Загрузить ZIP-файл. Если у бэкенда нет подключения к GitHub, вариант GitHub будет недоступен.
  3. Подготовка и загрузка. Выбор запускает тот же процесс подготовки в фоновом режиме (Включение API…, Проверка разрешений… и Подготовка сегмента…. После этого перетащите или выберите архивный файл с помощью загрузчика, укажите корневой каталог приложения и нажмите Развернуть, чтобы запустить сборку и развертывание.

Как выполнить развертывание с помощью Terraform

Если вам нужен больший контроль над процессом сборки и развернутой средой, вы можете выполнить развертывание с помощью Terraform. Terraform позволяет определять ресурсы App Hosting и управлять ими с помощью декларативных файлов конфигурации, а также развертывать собственный готовый образ контейнера непосредственно в App Hosting, не полагаясь на App Hosting при сборке из исходного кода.

Если вы раньше не работали с Terraform, прочитайте статью Начало работы с Terraform и Firebase. Если вы уже знакомы с Terraform, то можете начать работу с примерами файлов конфигурации и другими ресурсами App Hosting.

Как настроить подключение к GitHub для непрерывной интеграции и поставки

Вы можете в любой момент подключить репозиторий GitHub на вкладке Deployment (Развертывание) в настройках бэкенда в консоли Firebase. Это позволяет развернуть прототип приложения из локальной среды, а затем перейти к автоматизированному конвейеру CI/CD, когда вы будете готовы.

Развертывание с помощью ИИ-инструментов

Мы прекращаем поддержку Firebase Studio с 22 марта 2027 г. Это не повлияет на ваши серверные части App Hosting, но кнопка Опубликовать в Firebase Studio станет недоступна. Чтобы продолжить публиковать обновления, не меняя URL, перенесите проект. Подробнее о переносе…