Альтернативные способы развертывания на хостинге приложений

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

Развертывание из исходного кода

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

При развертывании из исходного кода App Hosting загружает ваш исходный код в хранилище Google Cloud Storage , запускает команду сборки вашего фреймворка в Cloud Build и развертывает скомпилированные артефакты в Cloud Run и Cloud CDN. Для локального развертывания из исходного кода используется тот же процесс сборки, что и для развертывания в GitHub. Если в вашем проекте присутствует файл .gitignore , файлы и папки, перечисленные в нем, исключаются из развертывания.

Развертывание можно выполнить из локального источника, используя либо Firebase CLI , либо Firebase Console .

Необходимые разрешения IAM и настройка инфраструктуры.

Поскольку и Firebase CLI, и Firebase Console используют одну и ту же серверную инфраструктуру для хранения и сборки архивов исходного кода, к обоим методам развертывания применяются одинаковые требования к разрешениям IAM .

Точные требования зависят от того, развертываете ли вы приложение в определенном регионе впервые. Для получения дополнительной информации о разрешениях см. обзор Firebase IAM и конкретные разрешения для Firebase App Hosting .

Разрешения для первоначального подключения (первое развертывание в определенном месте)

При первом запуске локального развертывания исходного кода в местоположении проекта Hosting должен создать хранилище GCS для ваших архивов и предоставить агенту Hosting сервиса доступ к ним. Поскольку это административные задачи на уровне проекта, для их выполнения требуются права владельца проекта или администратора IAM . Пользователь с базовой ролью редактора или пользователя, осуществляющего просмотр, не сможет выполнить эту первоначальную настройку и будет заблокирован.

Для установки необходимы следующие разрешения:

  • Включить API хранилища : serviceusage.services.enable
  • Создайте исходный сегмент : storage.buckets.create и storage.buckets.list
  • Настройте Service Agent : resourcemanager.projects.setIamPolicy , чтобы предоставить Hosting доступ на чтение ( roles/storage.objectViewer ), позволяющий получать загруженный код во время сборки.

При первоначальном развертывании создается сегмент GCS с 30-дневным жизненным циклом, после чего сегмент удаляется. Однако вы можете управлять этим временным интервалом в консоли Cloud Storage в разделе Cloud Storage -> Buckets -> Lifecycle -> Rules . См. раздел «Управление жизненными циклами объектов» .

Права доступа для последующих развертываний (после инициализации местоположения)

После инициализации исходного хранилища и привязок ролей для местоположения (путем первоначального развертывания через CLI или настройки через консоль) обычные разработчики, редакторы или администраторы App Hosting могут развертывать обновления. Для обычных развертываний не требуются права администратора на уровне проекта.

К активным правам развертывания относятся:

  • Проверить корзину : storage.buckets.list
  • Загрузить исходный архив : storage.objects.create
  • Запуск сборки и развертывания : Стандартные права доступа Hosting ( apphosting.builds.create и apphosting.rollouts.create )

Развертывание из исходного кода с помощью Firebase CLI.

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

Предварительные требования

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

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

  1. Запустите firebase init apphosting в локальной директории вашего проекта.
  2. При появлении запроса выберите «Использовать существующий проект» и укажите целевой проект Firebase.
  3. Выберите новый или существующий бэкэнд для развертывания; на этом шаге настраиваются развертывания 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.

Загрузка архивов может выполняться во время первоначального создания бэкэнда или при создании ручного развертывания на существующем бэкэнде, включая бэкэнды, первоначально развернутые с помощью Firebase CLI.

Поддерживаемые форматы

Загрузчик в консоли автоматически проверяет и принимает два формата сжатых архивов:

  • .zip
  • .tgz

Эти форматы явно отображаются в описании загружаемого файла.

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

Вариант А: Во время первоначального процесса адаптации бэкэнда.
  1. Выберите источник : В мастере создания бэкэнда на шаге «Как вы хотите импортировать приложение?» выберите «Загрузить ZIP-архив ».
  2. Подготовка к подключению : Нажатие кнопки «Далее» запускает фоновый процесс подготовки, который последовательно включает API хранилища, обеспечивает настройку правильных ролей и выполняет обновление/вставку данных в корзину. В пользовательском интерфейсе отображается индикатор загрузки с динамическими сообщениями о состоянии: «Включение API...», «Проверка разрешений...» и «Подготовка корзины...» .
    • Обработка ошибок и защитные механизмы : Если какой-либо этап подготовки завершается неудачей (например, если пользователь, не являющийся владельцем проекта, получает ошибку 403 PERMISSION_DENIED из-за недостаточных прав IAM), пользовательский интерфейс отображает специальное предупреждение с указанием связаться с владельцем проекта. Навигация по шагам строго заблокирована, а кнопки «Далее» и «Завершить и развернуть» остаются отключенными до тех пор, пока проблема не будет решена.
  3. Загрузка файлов : После успешного завершения подготовки выберите или перетащите архивный файл в компонент загрузки файлов.
  4. Настройка параметров : укажите корневой каталог вашего приложения (по умолчанию — / ).

  5. Нажмите «Завершить» и «Развернуть» : автономная кнопка «Завершить» отключена для загрузки ZIP-архивов, поскольку загрузка архива — это одноразовое действие, и для обеспечения работоспособности бэкэнда необходимо немедленно выполнить развертывание.

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

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

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

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

Настройте подключение к GitHub для CI/CD.

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

Внедрение с использованием инструментов искусственного интеллекта.

22 марта 2027 года мы прекращаем поддержку Firebase Studio . Хотя это не затронет ваши бэкэнды App Hosting , кнопка «Опубликовать» в Firebase Studio будет упразднена. Чтобы продолжить публикацию обновлений без изменения URL-адреса, перенесите свой проект. Узнайте, как это сделать .