Comprende el hosting de apps y cómo funciona

App Hosting controla una serie compleja de tareas en segundo plano para simplificar la implementación de tu app. En esta página, se describen partes clave de ese flujo de tareas y se proporciona información sobre los puntos en los que es posible que desees personalizar el flujo según las necesidades de tu app.

Compatibilidad con el framework

App Hosting proporciona asistencia para la compilación y la implementación sin necesidad de configuración para apps web desarrolladas en estos frameworks:

  • Next.js 13 y versiones posteriores
  • Angular 17.2 o versiones posteriores

App Hosting identifica el framework que estás usando mediante la inspección del archivo package-lock.json o de otro archivo de bloqueo en tu repositorio. Si intentas implementar una app de Node.js a la que le falta un archivo de bloqueo, App Hosting no podrá compilar ni ejecutar tu app. Puedes crear package-lock.json si ejecutas npm install en tu directorio raíz.

Los adaptadores de framework de App Hosting tienen dos roles clave:

  1. Analizan tu código fuente y cualquier archivo de configuración específico del framework (como next.config.js) para comprender el comportamiento configurado de tu app.
  2. Ejecutan el comando de compilación de tu app para generar elementos estáticos y crear una versión optimizada de tu app para producción.

Los adaptadores de framework compilan tu app de Node.js con npm run build y funcionan mejor con las secuencias de comandos de compilación predeterminadas para cada framework: next build para Next.js y ng build para Angular. El hosting de apps intentará realizar las compilaciones con comandos de compilación personalizados, pero no es seguro garantizar que la compilación funcione correctamente.

Cómo funciona la integración del repositorio de App Hosting

Developer Connect, la plataforma de conectividad de Google Cloud para herramientas externas de DevOps, controla la conexión importante entre tu repositorio de GitHub y el backend de App Hosting. Durante la creación de un backend de hosting de apps, el flujo de trabajo de la IU de Developer Connect te guía en la instalación de la app de Firebase en GitHub. Los pasos clave de este proceso son los siguientes:

  1. Le otorgas a Developer Connect la función de Secret Manager Admin. Esto permite que el sistema almacene credenciales de forma segura como “secretos” en Cloud Secret Manager.
  2. Autorizas a la app de Firebase GitHub para acceder a tu repositorio de GitHub.
  3. Developer Connect almacena un token de autorización de GitHub dedicado en el repositorio de Secret Manager de tu proyecto. No lo modifiques ni borres.

Además, App Hosting se integra a la API de verificaciones de GitHub para proporcionar una verificación de los lanzamientos. Esta verificación te permite ver el estado del lanzamiento en GitHub y depurar el proceso de implementación en caso de algún error.

Integración en Firebase y otros servicios de Google

App Hosting configura los entornos de ejecución y compilación para que puedas inicializar el SDK de Firebase Admin con las credenciales predeterminadas de la aplicación de Google. De esta manera, el backend puede comunicarse con otros productos de Firebase durante la compilación y la implementación.

La cuenta de servicio de backend de hosting de apps

Durante la compilación y el entorno de ejecución, el backend de App Hosting se autentica con otros servicios de Google mediante una cuenta de servicio. Para estos fines, se crea una cuenta de servicio predeterminada la primera vez que habilitas el hosting de aplicaciones en un proyecto de Firebase:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

Esta cuenta de servicio se aplica a todos los backends de forma predeterminada y tiene un conjunto mínimo de permisos que te permiten compilar, ejecutar y supervisar tu app. También tiene permiso para autenticar el SDK de Admin con las credenciales predeterminadas de la aplicación para realizar operaciones como cargar datos desde Cloud Firestore. Consulta los roles de Firebase App Hosting.

Si tu app necesita interactuar con servicios adicionales de Google durante el tiempo de compilación o desde un backend en ejecución, puedes personalizar la cuenta de servicio predeterminada agregando roles. Por ejemplo, si tu app requiere permisos para Vertex AI, es posible que debas agregar roles/aiplatform.user o algún rol relacionado.

Términos y definiciones clave

  • Backend: Es la colección de recursos administrados que crea App Hosting para compilar y ejecutar una aplicación web.
  • Lanzamiento: Una versión específica de tu app activa, vinculada a una confirmación de Git.
  • Rama publicada: Es la rama del repositorio de GitHub que se implementa en la URL publicada. A menudo, es la rama en la que se combinan las ramas de funciones o las ramas de desarrollo.

Problemas conocidos y limitaciones

La vista previa de App Hosting tiene algunas limitaciones conocidas:

  • En algunos casos, el backend de un hosting de aplicaciones puede mostrar mensajes Intermittent connection error en la URL de tu app. Habrá una corrección disponible en una versión posterior.
  • Los encabezados de caché se modifican para limitar las cachés de CDN a 60 s. En el futuro, cuando App Hosting pueda borrar definitivamente la caché durante la implementación, se quitará este límite.
  • Los archivos estáticos no almacenados en caché se entregan fuera de Cloud Run. En una versión posterior, se almacenarán y se entregarán desde el origen del hosting de aplicaciones para obtener un mejor rendimiento.
  • Los subdominios de comodines como dominios personalizados estarán disponibles en una versión posterior.
  • Es posible que los SKU de Hosting de apps no se muestren en la página de uso del backend de Firebase console. Estarán disponibles en una versión posterior.
  • Firebase console podría mostrar de forma intermitente un error que indica que “no se encontró la compilación y no es válida” cuando se crea el backend.
  • Actualmente, no se admiten los proyectos con archivos package.json anidados, sin importar si root\_directory está configurado con Firebase console o la CLI. Habrá una corrección disponible en una versión posterior.
  • Actualmente, todos los backends del mismo proyecto comparten una organización o cuenta de GitHub. Se pueden conectar a diferentes repositorios en esa organización o cuenta. Para crear backends que estén conectados a diferentes cuentas de GitHub, colócalos en proyectos separados.