El proceso de compilación de App Hosting

Firebase App Hosting utiliza Cloud Build para transformar el código fuente de tu aplicación en un formato en contenedores adecuado para la implementación en Cloud Run.

El proceso de compilación opera a través de las siguientes etapas clave:

  1. ubuntu: Inicialización del espacio de trabajo

  2. preparer: Recopila el código fuente y la configuración de tu aplicación

  3. pre-buildpack: Prepara el entorno del paquete de compilación

  4. build: Instala las dependencias y compila tu aplicación

  5. publisher: Finaliza el contenedor de producción Cloud Run

Estos cinco pasos corresponden directamente a los pasos de compilación que se muestran en Cloud Build en la Google Cloud consola:

Captura de pantalla de una vista de la consola de Google Cloud con los pasos de Cloud Build

Inicialización del espacio de trabajo

Esta etapa corresponde al paso de compilación de ubuntu. Inicializa el espacio de trabajo de compilación y garantiza que se establezcan los permisos de archivo correctos para los directorios que usan los pasos de compilación posteriores.

Preparador

Esta etapa es responsable de controlar la lógica previa a la compilación. Lee, desinfecta y escribe variables de entorno definidas por el usuario. También anula la referencia y fija cualquier secreto especificado en el archivo apphosting.yaml.

Pre-buildpack

Este paso prepara el entorno para el ciclo de vida de los paquetes de compilación nativos de la nube. Esto implica ejecutar un shim que traduce las configuraciones y las variables de entorno preparadas en la etapa anterior al formato que esperan las herramientas de CNB.

Compilación

Este es el núcleo del proceso de compilación, responsable de generar una imagen de contenedor ejecutable y un archivo bundle.yaml que define tu configuración de compilación. Utiliza los paquetes de compilación nativos de la nube y el objeto binario del creador del ciclo de vida para empaquetar la aplicación de manera eficiente. Puedes encontrar más información sobre el archivo bundle.yaml en GitHub.

Los paquetes de compilación son responsables de transformar el código fuente de tu aplicación en imágenes de contenedor listas para la producción. Firebase App Hosting encadena varios paquetes de compilación para completar el proceso de compilación:

  1. Paquete de compilación del entorno de ejecución: Garantiza que se incluyan todos los componentes necesarios para ejecutar una aplicación básica de Node.js y que se instalen las dependencias.
  2. Paquete de compilación de Monorepo: Configura los paquetes de compilación posteriores para controlar diferentes situaciones de monorepo.
  3. Paquete de compilación del framework: Instala el adaptador de framework correcto (como Angular o Next.js) y prepara los paquetes de compilación posteriores.

    Los adaptadores de framework se encargan de ejecutar el comando de compilación de producción y asignar cualquier valor de configuración relevante específico del framework a un formato estándar que App Hosting pueda leer.

  4. Paquete de compilación del administrador de paquetes: Ejecuta la instalación de dependencias y compila la app con npm, yarn o pnpm.

  5. Paquete de compilación del paquete de salida: Define el comando de ejecución y prepara el paquete de salida para la ejecución.

Publisher

En esta etapa final, se empaqueta toda la información extraída del código fuente de la aplicación , además de la imagen del contenedor de compilación, y se envía al App Hosting backend. Luego, el backend de App Hosting usa esta información para configurar Cloud Run con los parámetros de configuración adecuados.

Política de limpieza de compilación

Firebase App Hosting aplica una política automatizada de retención y limpieza de compilación. Según esta política, App Hosting retiene tus compilaciones correctas y sus revisiones asociadas Cloud Run de los últimos 14 días. Además, para garantizar que siempre tengas una compilación a la que puedas revertir, App Hosting retiene tus 5 compilaciones y lanzamientos correctos más recientes, independientemente de su antigüedad.

App Hosting nunca borrará ni quitará una compilación que esté actualmente en tu división de tráfico activa o esté asociada con un lanzamiento en curso.

Cuando las compilaciones más antiguas superan estos límites de retención, su estado interno se actualiza a EXPIRED. No puedes realizar una reversión instantánea en una compilación EXPIRED, y la opción para revertir a estas compilaciones se quitará de la Firebase consola. En su lugar, deberás crear una compilación nueva que apunte al mismo origen (ya sea una confirmación de Git, un contenedor en Artifact Registry, o un bucket de Google Cloud Storage) y lanzarla.

Una forma de conservar los recursos de compilación es controlar con qué frecuencia activas los lanzamientos automáticos. Consulta cómo administrar los lanzamientos automáticos.

Más información

Todo el proceso de compilación de App Hosting es de código abierto.