Firebase App Hosting использует Cloud Build для преобразования исходного кода вашего приложения в контейнеризированный формат, подходящий для развертывания в Cloud Run .
Процесс строительства проходит следующие ключевые этапы:
Ubuntu : Инициализация рабочей области.
preparer : Собирает исходный код и конфигурацию вашего приложения.
pre-buildpack : Подготавливает среду сборки.
build : Устанавливает зависимости и собирает ваше приложение.
Издатель : Завершает создание производственного контейнера Cloud Run .
Эти пять шагов напрямую соответствуют этапам сборки, отображаемым в Cloud Build в консоли Google Cloud:

Инициализация рабочей области
Этот этап соответствует шагу сборки Ubuntu. Он инициализирует рабочую область сборки, обеспечивая правильную установку прав доступа к файлам в каталогах, используемых на последующих этапах сборки.
Подготовитель
На этом этапе обрабатывается логика предварительной сборки. Он считывает, проверяет и записывает определяемые пользователем переменные среды. Также он разыменовывает и закрепляет любые секреты, указанные в файле apphosting.yaml .
Предварительный сборочный пакет
Этот шаг подготавливает среду для жизненного цикла Cloud Native Buildpacks . Он включает в себя запуск промежуточного файла, который преобразует конфигурации и переменные среды, подготовленные на предыдущем этапе, в формат, ожидаемый инструментами CNB.
Строить
Это ядро процесса сборки, отвечающее за генерацию исполняемого образа контейнера и файла bundle.yaml , определяющего конфигурацию сборки. Он использует Cloud Native Buildpacks и бинарный файл lifecycle creator для эффективной упаковки приложения. Дополнительную информацию о файле bundle.yaml можно найти на GitHub .
Buildpacks отвечают за преобразование исходного кода вашего приложения в готовые к использованию в производственной среде образы контейнеров. Firebase App Hosting объединяет несколько Buildpacks для завершения процесса сборки:
- Runtime Buildpack : Гарантирует включение всех необходимых компонентов для запуска базового приложения Node.js и установку зависимостей.
- Monorepo Buildpack : Настраивает последующие пакеты сборки для обработки различных сценариев использования монорепозитория.
Framework Buildpack : Устанавливает необходимый адаптер фреймворка (например, Angular или Next.js) и подготавливает последующие сборки.
Адаптеры фреймворка отвечают за выполнение команды сборки, адаптированной для производственной среды, и сопоставление любых соответствующих значений конфигурации, специфичных для фреймворка, со стандартным форматом, читаемым App Hosting .
Менеджер пакетов Buildpack : выполняет установку зависимостей и собирает приложение с помощью npm, yarn или pnpm.
Output Bundle Buildpack : Определяет команду запуска и подготавливает выходной пакет для выполнения.
Издатель
На заключительном этапе вся информация, извлеченная из исходного кода приложения, а также образ контейнера сборки, упаковывается и отправляется на серверную часть App Hosting . Затем серверная часть App Hosting использует эту информацию для настройки Cloud Run с соответствующими параметрами.
Узнать больше
Весь процесс разработки App Hosting является открытым исходным кодом.
- Код buildpack находится в репозитории buildpacks Google Cloud.
- Код для адаптеров фреймворка находится в репозитории firebase-framework-tools.
- Узнайте больше о сборочных пакетах Cloud Native и Cloud Build.