Formas alternativas de implementar en App Hosting

La mayoría de las veces, recomendamos usar lanzamientos automáticos o lanzamientos activados de forma manual desde la consola de Firebase. Sin embargo, es posible que necesites un flujo de implementación más personalizado. App Hosting tiene varias opciones para la implementación personalizada.

Implementa desde la fuente

La implementación desde la fuente te permite enviar el código fuente y la configuración de tu aplicación directamente a App Hosting sin necesidad de una conexión persistente con GitHub.

Cuando implementas desde la fuente, App Hosting sube tu código fuente a un bucket de Google Cloud Storage, ejecuta el comando de compilación de tu framework en Cloud Build y, luego, implementa los artefactos compilados en Cloud Run y Cloud CDN. Se usa el mismo proceso de compilación para las implementaciones de fuentes locales que para las implementaciones de GitHub. Si hay un archivo .gitignore en tu proyecto, los archivos y las carpetas que se enumeran en él se excluyen de la implementación.

Puedes implementar desde una fuente local con la CLI de Firebase o la consola de Firebase.

Permisos de IAM y configuración de infraestructura obligatorios

Debido a que la CLI de Firebase y la consola de Firebase usan la misma infraestructura de backend para almacenar y compilar tus archivos de origen, se aplican los mismos requisitos de permisos de IAM a ambos métodos de implementación.

Los requisitos exactos dependen de si implementas o no en una ubicación (región) específica por primera vez. Para obtener más información sobre los permisos, consulta la descripción general de IAM de Firebase y los permisos específicos de Firebase App Hosting.

Permisos para la incorporación inicial (primera implementación en una ubicación)

Cuando se inicia la implementación de la fuente local en una ubicación del proyecto por primera vez, App Hosting debe aprovisionar un bucket de GCS para almacenar tus archivos y otorgar acceso al agente de servicio de App Hosting para que pueda acceder a ellos. Como estas son tareas administrativas a nivel del proyecto, requieren permisos de propietario del proyecto o de administrador de IAM. Un usuario con un rol básico de editor o visualizador no puede realizar esta configuración inicial y se lo bloqueará.

Los permisos de configuración de requisitos previos incluyen los siguientes:

  • Habilita la API de Storage: serviceusage.services.enable
  • Crea un bucket de origen: storage.buckets.create y storage.buckets.list
  • Configura el agente de servicio: resourcemanager.projects.setIamPolicy para otorgar acceso de lectura a App Hosting (roles/storage.objectViewer) de modo que pueda recuperar el código subido durante las compilaciones.

Para la implementación inicial, el bucket de GCS se crea con un ciclo de vida de 30 días, después de los cuales se borra. Sin embargo, puedes administrar este período en la consola de Cloud, en Cloud Storage -> Buckets -> Ciclo de vida -> Reglas. Consulta Administra los ciclos de vida de los objetos.

Permisos para implementaciones posteriores (después de que se inicializa la ubicación)

Una vez que se inicializan el bucket de origen y las vinculaciones de roles para una ubicación (ya sea mediante una implementación inicial de la CLI o la configuración de la consola), los desarrolladores, editores o administradores de App Hosting habituales pueden implementar actualizaciones. No se requieren permisos de administración a nivel del proyecto para las implementaciones de rutina.

Los permisos de implementación activa incluyen los siguientes:

  • Verifica el bucket: storage.buckets.list
  • Sube el archivo de origen: storage.objects.create
  • Activa la compilación y el lanzamiento: Permisos estándar de App Hosting (apphosting.builds.create y apphosting.rollouts.create)

Implementa desde la fuente con la CLI de Firebase

La CLI de Firebase v14.4.0 y versiones posteriores te permite enviar el código fuente y las configuraciones de tu app directamente desde tu máquina local a Firebase. Esto es conveniente si ya administras otras implementaciones de Firebase (como reglas de seguridad o funciones) y quieres implementar tu app web y los servicios de backend juntos con un solo comando de la CLI.

Requisitos previos

  • Tus proyectos deben tener el plan Blaze.
  • Debes ejecutar la versión 14.4.0 de firebase-tools o una posterior.

Pasos para la implementación

  1. Ejecuta firebase init apphosting en el directorio de tu proyecto local.
  2. Cuando se te solicite, selecciona Use an existing project y elige tu proyecto de Firebase de destino.
  3. Selecciona un backend nuevo o existente para realizar la implementación. En este paso, se configuran las implementaciones de App Hosting para tu directorio local y se te solicitan detalles de configuración:
    • Es el ID del backend en el que se implementará.
    • La región en la que se implementará, si se crea un backend nuevo
    • La ruta de acceso al directorio raíz del código de la aplicación
    • Tu entorno de ejecución de Node.js preferido Seleccionar un entorno de ejecución con versiones habilita las actualizaciones automáticas de imágenes base (ABIU) para aplicar parches de seguridad de forma automática a tu entorno subyacente.
  4. App Hosting guarda tus preferencias de implementación en firebase.json, lo que crea el archivo en tu proyecto local si aún no existe. Una vez que se complete correctamente la inicialización, ejecuta firebase deploy para implementar tu código fuente.

Ejemplo de firebase.json

{
  "apphosting": [
    {
      "backendId": "my-backend",
      // rootDir specifies the directory containing the app to deploy, but the entire
      // parent directory of firebase.json will be zipped and uploaded to ensure that
      // dependencies outside of the app directory will be available at build time.
      "rootDir": "./my-app",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log",
        "functions"
      ]
    }
  ]
}

Implementa con Firebase console (carga de ZIP)

La consola deFirebase proporciona una interfaz gráfica para implementar aplicaciones subiendo directamente un archivo de origen comprimido. Esto sirve como alternativa al flujo de conexión de GitHub, para los casos en los que prefieras no usar GitHub o prefieras una configuración de CI/CD diferente.

Las cargas de archivos se pueden realizar durante la creación inicial del backend o cuando se crea un lanzamiento manual en un backend existente, incluidos los backends implementados originalmente con la CLI de Firebase.

Formatos compatibles

El cargador de la consola valida y acepta de forma nativa dos formatos de archivo comprimidos:

  • .zip
  • .tgz

Estos formatos se muestran de forma explícita en el texto de descripción del cargador de archivos.

Pasos para la implementación

Opción A: Durante la integración inicial del backend
  1. Selecciona la fuente: En el asistente de creación de backends, selecciona Subir un archivo ZIP durante el paso "¿Cómo quieres importar tu app?".
  2. Preparación de la incorporación: Cuando haces clic en "Siguiente", se activa el flujo de preparación en segundo plano, que habilita de forma secuencial la API de Storage, garantiza que se configuren los roles correctos y actualiza o inserta el bucket. La IU muestra un ícono giratorio de carga con mensajes de estado dinámicos: "Habilitando la API…", "Verificando permisos..." y "Preparando bucket...".
    • Manejo de errores y protecciones: Si falla algún paso de preparación (como un usuario que no es propietario y recibe un 403 PERMISSION_DENIED debido a permisos de IAM insuficientes), la IU muestra una advertencia dedicada en la que se te indica que te comuniques con un propietario del proyecto. La navegación por pasos está estrictamente bloqueada, y el botón "Siguiente" y el botón final "Finalizar e implementar" permanecen inhabilitados hasta que se resuelva el problema.
  3. Sube archivos: Una vez que la preparación se complete correctamente, selecciona o arrastra tu archivo de almacenamiento al componente de carga de archivos.
  4. Establece la configuración: Especifica el directorio raíz de la app (el valor predeterminado es /).

  5. Haz clic en Finalizar e implementar: El botón independiente "Finalizar" está inhabilitado para las cargas de archivos ZIP, ya que subir un archivo es una acción única y debe seguirse de inmediato de una implementación para garantizar un backend funcional.

Opción B: Crea un lanzamiento manual
  1. Abrir el diálogo: En el panel de App Hosting, haz clic en Crear lanzamiento.
  2. Seleccionar fuente: Selecciona Subir un archivo ZIP en el paso a paso del diálogo. Si el backend no tiene una conexión de GitHub existente, la opción "GitHub" está inhabilitada.
  3. Preparación y carga: La selección activa el mismo flujo de preparación en segundo plano ("Habilitando la API…", "Checking permissions..." y "Preparing bucket..."). Una vez que se haya completado correctamente, arrastra o selecciona el archivo con el cargador, especifica el directorio raíz de la app y haz clic en Implementar para activar la compilación y el lanzamiento.

Implementa con Terraform

Si necesitas tener más control sobre el proceso de compilación y el entorno implementado, puedes implementar con Terraform. Terraform te permite definir y administrar tus recursos de App Hosting con archivos de configuración declarativos y proporciona la capacidad de implementar tu propia imagen de contenedor compilada previamente de forma directa en App Hosting en lugar de depender de App Hosting para compilar a partir de tu código fuente.

Si es la primera vez que usas Terraform, consulta Comienza a usar Terraform y Firebase. Si ya conoces Terraform, puedes comenzar con archivos de configuración de muestra y otros recursos de App Hosting.

Configura una conexión de GitHub para CI/CD

Tienes la opción de conectar un repositorio de GitHub en cualquier momento en la pestaña Implementación de la configuración de un backend en Firebase console. Esto te permite implementar un prototipo de app desde un entorno local y, luego, realizar la transición a una canalización de CI/CD automatizada cuando todo esté listo.

Implementa con herramientas de IA

Daremos de baja Firebase Studio el 22 de marzo de 2027. Si bien tus backends de App Hosting no se verán afectados, se retirará el botón Publicar en Firebase Studio. Para seguir publicando actualizaciones sin cambiar la URL, migra tu proyecto. Obtén más información para migrar.