Formas alternativas de implementar en App Hosting

La mayoría de las veces, te recomendamos que uses lanzamientos automáticos o lanzamientos activados de forma manual desde la Firebase consola. 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 de GitHub.

Cuando se realiza la implementación desde la fuente, App Hosting sube el código fuente a un Google Cloud Storage bucket, 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 realizar la implementación desde una fuente local con Firebase CLI o Firebase console.

Permisos de IAM y configuración de infraestructura obligatorios

Dado que Firebase CLI y Firebase console 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 es la primera vez que realizas la implementación en una ubicación (región) específica. 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 integració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, 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 de requisitos previos incluyen lo siguiente:

  • Habilitar la API de Storage: serviceusage.services.enable
  • Crear bucket de origen: storage.buckets.create y storage.buckets.list
  • Configurar el agente de servicio: resourcemanager.projects.setIamPolicy para otorgar Hosting acceso de lectura (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 del cual se borra. Sin embargo, puedes administrar este período en la consola de Cloud en Cloud Storage -> Buckets -> Lifecycle -> Rules. Consulta cómo administrar 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 una configuración de la consola), los desarrolladores, editores o App Hosting administradores 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 el bucket: storage.buckets.list
  • Subir el archivo de origen: 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 el Firebase CLI

Firebase CLI v14.4.0 y versiones posteriores te permiten 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 deseas implementar tu app web y los servicios de backend junto 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 implementar. Este paso configura las implementares de Hosting para tu directorio local y te solicita detalles de configuración:
    • El ID del backend en el que se realizará la implementación
    • La región en la que se realizará la implementación, 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. Si seleccionas un entorno de ejecución con versión, se habilitan 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, creando el archivo en tu proyecto local si aún no existe. Una vez que se complete la inicialización 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 archivos ZIP)

The Firebase console proporciona una interfaz gráfica para implementar aplicaciones mediante la carga directa de un archivo de origen comprimido. Esto sirve como alternativa al flujo de conexión de GitHub, para 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 implementados originalmente con la Firebase CLI.

Formatos admitidos

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. Selecciona la fuente: En el asistente para la creación de backend, selecciona Subir un archivo ZIP durante el paso "¿Cómo quieres importar tu app?".
  2. Preparación para la integració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 actualiza el bucket. La IU muestra un indicador de carga con mensajes de estado dinámicos: "Habilitando la API...", "Verificando permisos...", y "Preparando el bucket...".
    • Control de errores y protecciones: Si falla algún paso de preparación (por ejemplo, si un usuario que no es propietario recibe un mensaje 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. Sube archivos: Una vez que se complete la preparación correctamente, selecciona o arrastra el archivo a la carpeta del componente de carga de archivos.
  4. Configura los parámetros: 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 porque la carga de un archivo es una acción única y debe ir seguida de inmediato de una implementación para garantizar un backend funcional.

Opción B: Crea un lanzamiento manual
  1. Abre el diálogo: En el panel de Hosting, haz clic en Crear lanzamiento.
  2. Selecciona la fuente: Selecciona Subir un archivo ZIP en el 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 preparación ("Habilitando la API...", "Verificando permisos..." y "Preparando el bucket..."). Una vez que se complete 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 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 App Hosting recursos con archivos de configuración declarativos y te brinda la capacidad de implementar tu propia imagen de contenedor precompilada directamente en App Hosting en lugar de depender de App Hosting para compilar desde tu código fuente.

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

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 la Firebase console. 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és listo.

Implementa con herramientas de IA

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