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 entregar solicitudes. También te recomendamos que especifiques 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 pruebas, cada uno en un proyecto de Firebase independiente. Siguiendo los mismos principios, puedes implementar 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-project
ymy-staging-firebase-project
. Asegúrate de etiquetar tu proyecto de Firebase de producción con el tipo de entorno de “producción”. - En cada proyecto, creaste un backend de App Hosting, con la rama activa configurada en la rama de GitHub que deseas implementar (como
main
). Consulta Cómo comenzar 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 entorno de ejecución (CPU, simultaneidad, límites de memoria, etc.) y las variables de entorno de tu app. También admite referencias a secretos administrados con Cloud Secret Manager, lo que hace que sea seguro realizar el registro en el control de código fuente. Para obtener más información, consulta Configura un backend.
Para comenzar, crea un archivo apphosting.yaml
en el directorio raíz de la 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 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. En este flujo de ejemplo, se crea un entorno de pruebas.
Paso 1: Establece el nombre del entorno
Cada backend de App Hosting tiene una 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 configurar el nombre del entorno de backend,
- En Firebase console, selecciona tu proyecto de etapa de pruebas (en este ejemplo, my-staging-firebase-project).
- Selecciona App Hosting en el panel de navegación izquierdo.
- Haz clic en Ver panel en el backend que elegiste.
- En la pestaña Configuración, selecciona Implementación.
- En Nombre del entorno,ingresa el nombre de tu entorno. Puedes nombrar el entorno como desees. En este ejemplo, es staging.
- Haz clic en Guardar.
Cuando se active un lanzamiento de App Hosting para tu backend (ya sea en el push de git o de forma manual a través de la consola), App Hosting buscará un archivo apphosting.ENVIRONMENT_NAME.yaml
antes de volver 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
a fin de
especificar anulaciones específicas del entorno. Este archivo tiene el mismo formato que el apphosting.yaml predeterminado y debe estar ubicado en el directorio raíz de la app junto con apphosting.yaml
.
En el momento de la compilación, App Hosting combina 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
con el siguiente aspecto:
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.appspot.com
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
El resultado combinado final, que puedes inspeccionar en los 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.appspot.com
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Ten en cuenta que se reemplazaron ciertos valores de runConfig
, como la CPU, así como las variables de entorno superpuestas.
Paso 3: Implementa tu base de código
Cuando termines de editar el archivo apphosting.ENVIRONMENT_NAME.yaml
específico de tu entorno, envíalo 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
- Ve más allá: Explora un codelab de Firebase que integra una app alojada con funciones de IA de Firebase y Firebase Authentication: Next.js | Angular
- Conecta un dominio personalizado.
- Configura tu backend.
- Supervisa los lanzamientos, el uso del sitio y los registros.