Formas alternativas de implementar en App Hosting

La mayoría de las veces, recomendamos usar lanzamientos automáticos o lanzamientos activados manualmente 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 a GitHub.

Cuando se realiza la implementación desde el código 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. El mismo proceso de compilación se usa 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 realizar la implementación desde una fuente local con la CLI de Firebase o la consola de Firebase.

Permisos de IAM obligatorios y configuración de la infraestructura

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

Los requisitos exactos dependen de si implementas 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 Firebase IAM 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 la ubicación de un proyecto por primera vez, Hosting debe aprovisionar un bucket de GCS para almacenar tus archivos y otorgar acceso al agente de servicio de Hosting para que pueda acceder a ellos. Dado que estas son tareas administrativas a nivel del proyecto, requieren permisos de propietario del proyecto o administrador de IAM. Un usuario con un rol básico de editor o visualizador no puede realizar esta configuración inicial y se bloqueará.

Los permisos de configuración previos incluyen los siguientes:

  • Habilita la API de Storage: serviceusage.services.enable
  • Create source bucket: storage.buckets.create y storage.buckets.list
  • Configurar el agente de servicio: resourcemanager.projects.setIamPolicy para otorgar acceso de lectura a Hosting (roles/storage.objectViewer) para 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 con una implementación inicial de la CLI o con 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 activos incluyen lo siguiente:

  • Verificar bucket: storage.buckets.list
  • Cargar archivo fuente: storage.objects.create
  • Activar la compilación y el lanzamiento: Permisos estándar de Hosting (apphosting.builds.create y apphosting.rollouts.create)

Implementa desde la fuente con la CLI de Firebase

La versión 14.4.0 y las versiones posteriores de la CLI de Firebase te permiten enviar el código fuente y la configuración 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 deseas implementar tu app web y tus servicios de backend con un solo comando de la CLI.

Requisitos previos

  • Tus proyectos deben estar en el plan Blaze.
  • Debes ejecutar firebase-tools versión 14.4.0 o posterior.

Pasos para la implementación

  1. Ejecuta firebase init apphosting en el directorio de tu proyecto local.
  2. Cuando se te solicite, selecciona Usar un proyecto existente y elige tu proyecto de Firebase de destino.
  3. Selecciona un backend nuevo o existente para realizar la implementación. Este paso configura las implementaciones de Hosting para tu directorio local y te solicita detalles de configuración:
    • ID del backend en el que se realizará la implementación
    • Región en la que se realizará la implementación, si se crea un backend nuevo
    • Ruta de acceso al directorio raíz del código de la aplicación
    • El entorno de ejecución de Node.js que prefieras Si seleccionas un entorno de ejecución con versiones, se habilitarán las actualizaciones automáticas de imágenes base (ABIU) para aplicar automáticamente parches de seguridad a tu entorno subyacente.
  4. App Hosting guarda tus preferencias de implementación en firebase.json y crea el archivo en tu proyecto local si aún no existe. Una vez que la inicialización se complete correctamente, 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 de Firebase proporciona una interfaz gráfica para implementar aplicaciones subiendo directamente un archivo fuente comprimido. Esto sirve como alternativa al flujo de conexión de GitHub en los casos en los que prefieres no usar GitHub o prefieres 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 que se implementaron originalmente con la CLI de Firebase.

Formatos compatibles

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

  • .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. Seleccionar fuente: En el asistente de creación de backend, selecciona Subir un archivo ZIP durante el paso "¿Cómo quieres importar tu app?".
  2. Preparación para la incorporación: Si 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 realiza una inserción o actualización del bucket. La IU muestra un spinner de carga con mensajes de estado dinámicos: "Habilitando la API…", “Verificando permisos…” y “Preparando bucket…”
    • Control de errores y medidas de protección: Si falla algún paso de preparación (por ejemplo, si un usuario que no es propietario recibe un 403 PERMISSION_DENIED debido a permisos de IAM insuficientes), la IU muestra una advertencia específica que 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. Subir archivos: Una vez que se complete la preparación correctamente, selecciona o arrastra tu archivo a la herramienta de carga de archivos.
  4. Configurar parámetros: Especifica el Directorio raíz de la app (de forma predeterminada, /).

  5. Haz clic en Finalizar y, luego, en Implementar: El botón independiente "Finalizar" está inhabilitado para las cargas de archivos ZIP porque la carga de un archivo es una acción única y debe seguirse inmediatamente de una implementación para garantizar un backend funcional.

Opción B: Cómo crear un lanzamiento manual
  1. Abrir diálogo: En el panel Hosting, haz clic en Crear lanzamiento.
  2. Seleccionar fuente: Selecciona Subir un archivo ZIP en el asistente del diálogo. Si el backend no tiene una conexión existente con GitHub, la opción "GitHub" estará 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 complete la acción, arrastra o selecciona el archivo de tu 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 un mayor control sobre el proceso de compilación y el entorno implementado, puedes realizar la implementación con Terraform. Terraform te permite definir y administrar tus recursos de App Hosting con archivos de configuración declarativos, y te brinda la capacidad de implementar tu propia imagen de contenedor prediseñada directamente en App Hosting en lugar de depender de App Hosting para compilar desde tu código fuente.

Si no conoces 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

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

Implementa con herramientas de IA

Daremos de baja Firebase Studio el 22 de marzo de 2027. Si bien tus back-ends 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.