App Hosting のビルドプロセス

Firebase App HostingCloud Build を利用して、アプリケーションのソースコードを Cloud Run へのデプロイに適したコンテナ化された形式に変換します。

ビルドプロセスは、次の主要なステージで動作します。

  1. ubuntu: ワークスペースの初期化。

  2. preparer: アプリケーションのソースコードと構成を収集します。

  3. pre-buildpack: Buildpack 環境を準備します。

  4. build: 依存関係をインストールして、アプリケーションをビルドします。

  5. publisher: 本番環境の Cloud Run コンテナを確定します。

これらの 5 つの手順は、Google Cloud コンソールの Cloud Build に表示されるビルドステップに直接対応しています。

Cloud Build ステップの Google Cloud コンソール ビューのスクリーン キャプチャ

Workspace の初期化

このステージは ubuntu ビルドステップに対応しています。ビルド ワークスペースを初期化し、後続のビルドステップで使用されるディレクトリに正しいファイル権限が設定されていることを確認します。

作成者

このステージは、ビルド前のロジックの処理を担当します。ユーザー定義の環境変数を読み取り、サニタイズして書き込みます。また、apphosting.yaml ファイルで指定されたシークレットの参照を解除して固定します。

事前ビルドパック

このステップでは、Cloud Native Buildpacks ライフサイクルの環境を準備します。これには、前のステージで準備した構成と環境変数を CNB ツールが想定する形式に変換するシムの実行が含まれます。

ビルド

これはビルドプロセスのコアであり、実行可能なコンテナ イメージと、ビルド構成を定義する bundle.yaml ファイルを生成します。Cloud Native Buildpacks とライフサイクル クリエイター バイナリを使用して、アプリケーションを効率的にパッケージ化します。bundle.yaml ファイルの詳細については、github をご覧ください。

Buildpack は、アプリケーションのソースコードを本番環境に対応したコンテナ イメージに変換する役割を担います。Firebase App Hosting は、複数の Buildpack を連結してビルドプロセスを完了します。

  1. ランタイム Buildpack: 基本的な Node.js アプリケーションの実行に必要なすべてのコンポーネントが含まれ、依存関係がインストールされていることを確認します。
  2. Monorepo Buildpack: さまざまな monorepo シナリオを処理するように後続の Buildpack を構成します。
  3. Framework Buildpack: 正しいフレームワーク アダプタ(Angular や Next.js など)をインストールし、後続の Buildpack を準備します。

    フレームワーク アダプターは、本番環境用のビルドコマンドを実行し、関連するフレームワーク固有の構成値を App Hosting が読み取れる標準形式にマッピングします。

  4. パッケージ マネージャー Buildpack: npm、yarn、pnpm を使用して依存関係のインストールを実行し、アプリをビルドします。

  5. 出力バンドル Buildpack: 実行コマンドを定義し、実行用の出力バンドルを準備します。

パブリッシャー

この最終段階では、アプリケーションのソースコードから抽出されたすべての情報とビルド コンテナ イメージがパッケージ化され、App Hosting バックエンドに送信されます。App Hosting バックエンドは、この情報を使用して適切な構成で Cloud Run を設定します。

詳細

App Hosting のビルドプロセス全体がオープンソースです。