Firebase App Hosting は Cloud Build を使用して、アプリケーションのソースコードを Cloud Run へのデプロイに適したコンテナ化された形式に変換します。
ビルドプロセスは、次の主要なステージで実行されます。
取り込み: アプリケーションのソースコードと構成を収集します。
ビルド: 依存関係をインストールしてアプリケーションをビルドします。
ハンドオフ: 本番環境の Cloud Run コンテナを確定します。
これらの 3 つのステップは、Google Cloud コンソールの Cloud Build に表示されるビルドステップ 1、2、3 に直接対応しています。
取り込みステージ
このステージは、ビルド前のロジックを処理します。ユーザー定義の環境変数の読み取り、サニタイズ、書き込みを行います。また、apphosting.yaml
ファイルで指定されたシークレットの参照を解除してピン留めします。
ビルドステージ
これはビルドプロセスのコアであり、実行可能なコンテナ イメージと、ビルド構成を定義する bundle.yaml
ファイルを生成します。Cloud Native Buildpack を使用して、アプリケーションを効率的にパッケージ化します。bundle.yaml
ファイルの詳細については、github をご覧ください。
Buildpack は、アプリケーションのソースコードを本番環境対応のコンテナ イメージに変換します。Firebase App Hosting は複数の Buildpack を連結してビルドプロセスを完了します。
- ランタイム Buildpack: 基本的な Node.js アプリケーションの実行に必要なすべてのコンポーネントが含まれ、依存関係がインストールされます。
- Monorepo Buildpack: さまざまな monorepo シナリオを処理するように後続の Buildpack を構成します。
フレームワーク Buildpack: 適切なフレームワーク アダプタ(Angular や Next.js など)をインストールし、後続の Buildpack を準備します。
フレームワーク アダプターは、本番環境向けのビルドコマンドを実行し、関連するフレームワーク固有の構成値を App Hosting で読み取れる標準形式にマッピングします。
Package Manager Buildpack: 依存関係のインストールを実行し、npm、yarn、または pnpm を使用してアプリをビルドします。
出力バンドル Buildpack: 実行コマンドを定義し、出力バンドルを実行用に準備します。
引き継ぎステージ
この最後のステージでは、アプリケーションのソースコードから抽出されたすべての情報とビルド コンテナ イメージをパッケージ化して、App Hosting バックエンドに送信します。App Hosting バックエンドは、この情報を使用して、適切な構成で Cloud Run を設定します。
詳細
App Hosting のビルドプロセス全体はオープンソースです。
- Buildpack コードは Google Cloud Buildpack リポジトリにあります。
- フレームワーク アダプタのコードは firebase-framework-tools リポジトリにあります。
- Cloud Native Buildpack と Cloud Build の詳細を確認する