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

Most of the time, we recommend using automatic rollouts or manually-triggered rollouts from the Firebase console. However, you may have a use for a more customized deployment flow. App Hosting has multiple options for custom deployment.

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

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

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

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

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

Because both the Firebase CLI and the Firebase console use the same backend infrastructure to store and build your source archives, the same IAM permission requirements apply to both deployment methods .

The exact requirements depend on whether or not you are deploying to a specific location (region) for the first time. For more information on permissions, see the overview of Firebase IAM and specific Firebase App Hosting permissions .

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

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

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

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

For initial deployment, the GCS bucket is created with a 30-day lifecycle, after which the bucket is deleted. However, you can manage this timeframe in the Cloud console in Cloud Storage -> Buckets -> Lifecycle -> Rules . See manage object lifecycles .

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

Once the source bucket and role bindings have been initialized for a location (by either an initial CLI deployment or console setup), regular Developers, Editors, or App Hosting Admins can deploy updates. Project-level administration permissions are not required for routine deployments.

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

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

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

Firebase CLI v14.4.0 and higher lets you push your app's source code and configurations directly from your local machine to Firebase. This is convenient if you already manage other Firebase deployments (such as security rules or functions) and want to deploy your web app and backend services together with a single CLI command.

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

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

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

  1. Запустите firebase init apphosting в локальной директории вашего проекта.
  2. При появлении запроса выберите «Использовать существующий проект» и укажите целевой проект Firebase.
  3. Выберите новый или существующий бэкэнд для развертывания; на этом шаге настраиваются развертывания Hosting для вашей локальной директории и запрашиваются данные для конфигурации:
    • Идентификатор бэкэнда, в который будет выполнено развертывание.
    • Регион, в который следует выполнить развертывание, если создается новый бэкэнд.
    • Путь к корневому каталогу кода вашего приложения.
    • Выбранная вами среда выполнения Node.js. Выбор версионированной среды выполнения позволяет функции автоматического обновления базового образа (ABIU) автоматически применять исправления безопасности к вашей базовой среде.
  4. App Hosting saves your deployment preferences in firebase.json , creating the file in your local project if it doesn't already exist. Once initialization completes successfully, run firebase deploy to deploy your source code.

Пример файла 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. Onboarding Preparation : Clicking "Next" triggers the background preparation flow, which sequentially enables the Storage API, ensures the correct roles are set up, and upserts the bucket. The UI displays a loading spinner with dynamic status messages: "Enabling API...", "Checking permissions...", and "Preparing bucket..." .
    • Error Handling & Guardrails : If any preparation step fails (such as a non-Owner receiving a 403 PERMISSION_DENIED due to insufficient IAM permissions), the UI displays a dedicated warning instructing you to contact a Project Owner. Stepper navigation is strictly locked, and the "Next" button and final "Finish and Deploy" remain disabled until the issue is resolved.
  3. Загрузка файлов : После успешного завершения подготовки выберите или перетащите архивный файл в компонент загрузки файлов.
  4. Настройка параметров : укажите корневой каталог вашего приложения (по умолчанию — / ).

  5. Click Finish and Deploy : The standalone "Finish" button is disabled for zip uploads because uploading an archive is a one-time action and must be immediately followed by a deployment to ensure a functional backend.

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

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

If you need greater control over the build process and deployed environment, you can deploy using Terraform. Terraform lets you define and manage your App Hosting resources using declarative configuration files, and provides the ability to deploy your own prebuilt container image directly to App Hosting instead of relying on App Hosting to build from your source code.

If you're new to Terraform, see Get started with Terraform and Firebase . If you're already familiar with Terraform, you can get started with sample configuration files and other App Hosting resources .

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

You have the option to connect a GitHub repository at any time in the Deployment tab of a backend's settings in the Firebase console. This lets you deploy an app prototype from a local environment and then transition to an automated CI/CD pipeline when you're ready.

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

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