Implementa varios entornos a partir de una base de código

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 pruebas, o bien 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 y my-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 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 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 el Administrador de secretos de Cloud, 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 establecer el nombre del entorno de tu backend, haz lo siguiente:

  1. En Firebase console, selecciona tu proyecto de etapa de pruebas (en este ejemplo, my-staging-firebase-project).
  2. Selecciona App Hosting en el panel de navegación izquierdo.
  3. Haz clic en Ver panel en el backend que elegiste.
  4. En la pestaña Configuración, selecciona Implementación.
  5. En Nombre del entorno,ingresa el nombre de tu entorno. Puedes nombrar el entorno como desees. En este ejemplo, es staging.
  6. 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 tu configuración específica del entorno, crea un archivo con el nombre apphosting.ENVIRONMENT_NAME.yaml para especificar las anulaciones específicas del entorno. Este archivo tiene el mismo formato que el apphosting.yaml predeterminado y debe ubicarse en el directorio raíz de tu 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 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 combinado, 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 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