Es común tener varios entornos implementados desde la misma base de código, cada uno con una configuración ligeramente diferente. Por ejemplo, es posible que desees asignar menos CPU y RAM a tu entorno de etapa de pruebas o asegurarte de que tu entorno de producción mantenga al menos 1 instancia activa y lista para atender solicitudes. También es posible que desees especificar diferentes variables de entorno y secretos según el entorno y los recursos que deseas usar.
En esta guía, se describe cómo implementar un entorno de producción y de etapa de pruebas, cada uno en un proyecto de Firebase independiente. Siguiendo los mismos principios, puedes realizar implementaciones en otros tipos de entornos. Para obtener más información sobre los entornos, consulta la Descripción general de los entornos y las Prácticas recomendadas generales para configurar proyectos de Firebase.
Requisitos previos
- El código de tu aplicación ya está almacenado en GitHub.
- Ya creaste un proyecto distinto para cada uno de tus entornos, por ejemplo,
my-production-firebase-projectymy-staging-firebase-project. Asegúrate de etiquetar tu proyecto de Firebase de producción con el "production" environment type. - En cada proyecto, creaste un backend de App Hosting, con la rama activa establecida en la rama de GitHub que deseas implementar (como
main). Consulta Comienza a usar App Hosting para obtener más información.
Paso 0: Crea una configuración predeterminada en apphosting.yaml
App Hosting admite un archivo de configuración llamado apphosting.yaml para administrar
la configuración del tiempo de ejecución (CPU, simultaneidad, límites de memoria, etcétera) y las variables de
entorno de tu app. También admite referencias a secretos administrados con
Cloud Secret Manager, lo que permite realizar el registro de forma segura en el control de origen. Para obtener más
información, consulta Configura un
backend.
Para comenzar, crea un archivo apphosting.yaml en el directorio raíz de tu app.
Este es el archivo de configuración de resguardo que se usa cuando no se encuentra un archivo de configuración específico del entorno. Los valores almacenados en apphosting.yaml deben ser valores predeterminados que sean seguros para usar en todos los entornos.
En las siguientes secciones, se explica cómo anular los valores predeterminados en apphosting.yaml para entornos específicos. Este flujo de ejemplo crea un entorno de etapa de pruebas.
Paso 1: Establece el nombre del entorno
Cada backend App Hosting tiene un parámetro de configuración de Nombre del entorno. Este campo se usa para asignar tu backend a un archivo de configuración específico del entorno y se puede cambiar en cualquier momento. Solo puedes establecer un nombre de entorno por backend.
Para establecer el nombre del entorno de tu backend, haz lo siguiente:
- En Firebase console, selecciona tu proyecto de etapa de pruebas (en este ejemplo, my-staging-firebase-project).
- Selecciona App Hosting en la navegación de la izquierda.
- Haz clic en Ver panel en el backend elegido.
- En la pestaña Configuración, selecciona Entorno.
- En Nombre del entorno, ingresa el nombre de tu entorno. Puedes nombrar el entorno como quieras. En este ejemplo, es staging.
- Haz clic en Guardar.
Cuando se active una App Hosting implementación para tu backend (ya sea en git
push o de forma manual a través de la consola), App Hosting buscará un
apphosting.ENVIRONMENT_NAME.yaml archivo antes de
recurrir a apphosting.yaml.
Paso 2: Crea tu archivo apphosting.yaml específico del entorno
Para la configuración específica del entorno, crea un archivo con el nombre
apphosting.ENVIRONMENT_NAME.yaml para
especificar anulaciones específicas del entorno. Este archivo tiene el mismo formato que el
archivo apphosting.yaml predeterminado y debe ubicarse en
el directorio raíz de tu app junto con apphosting.yaml.
Durante la compilación, App Hosting fusiona estos dos archivos, y se da prioridad a
los valores del archivo YAML específico del entorno sobre el archivo apphosting.yaml
base.
En este ejemplo, crearás un archivo llamado apphosting.staging.yaml en el directorio raíz de la app:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Supongamos que ya tenías un apphosting.yaml que se veía de la siguiente manera:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
El resultado final fusionado, que puedes inspeccionar en tus registros de Cloud Build, se vería de la siguiente manera:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Ten en cuenta que se anularon ciertos valores de runConfig, como la CPU, así como las variables de entorno superpuestas.
Paso 3: Implementa tu base de código
Una vez que termines de editar tu archivo apphosting.ENVIRONMENT_NAME.yaml específico del entorno, envía el archivo a GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
Cualquier backend etiquetado con este nombre de entorno usará los valores de anulación específicos que especificaste en su archivo YAML correspondiente y recurrirá a apphosting.yaml cuando no se encuentre un valor. Para los backends sin un nombre de entorno asociado, puedes seguir usando apphosting.yaml.
Próximos pasos
- Profundiza: Realiza un codelab de Firebase que integre una app alojada con Firebase Authentication y funciones de Google AI: Next.js | Angular
- Conecta un dominio personalizado.
- Configura tu backend.
- Supervisa las implementaciones, el uso del sitio y los registros.