Другие способы развертывания в 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

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

Требования

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

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

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