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 quieras asignar menos CPU y RAM al entorno de etapa de pruebas, o puedes asegurarte tu entorno de producción mantiene al menos 1 instancia activa y lista para entregar solicitudes. También puedes especificar diferentes variables de entorno y según el entorno y los recursos que quieras usar.

En esta guía, se describe cómo implementar un entorno de producción y de etapa de pruebas, cada uno para en un proyecto de Firebase independiente. Siguiendo los mismos principios, puedes implementar a otros tipos diferentes de entornos. Para obtener más información sobre los entornos, consulta consulta la Descripción general de entornos y la política General prácticas recomendadas para configurar Firebase proyectos.

Requisitos previos

  • El código de la 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 Firebase de producción proyecto con el campo "production" medio ambiente del tipo de fila.
  • En cada proyecto, creaste un backend App Hosting, con el backend configurada en la rama de GitHub que quieres implementar (como main). Consulta Comienza a usar App Hosting para obtener más información 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 configuración del entorno de ejecución (CPU, simultaneidad, límites de memoria, etc.) y el entorno variables para tu app. También admite referencias a Secrets administrados con Cloud Secret Manager, lo que hace que sea seguro registrarse en el control del código fuente. Para ver más 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 un no se encuentra el archivo de configuración específico del entorno. Los valores almacenados en apphosting.yaml debe ser una configuración predeterminada que sea segura de 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 una configuración de Nombre del entorno. Este campo es para asignar tu backend a un archivo de configuración específico del entorno y también modificarse en cualquier momento. Solo puedes configurar un nombre de entorno por backend.

Para configurar el nombre del entorno de backend,

  1. En Firebase console, selecciona el 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 sea lo que más te guste. En este ejemplo, es staging.
  6. Haz clic en Guardar.

Cuando se activa un lanzamiento de App Hosting para tu backend (ya sea en Git) push o de forma manual a través de la consola), App Hosting verificará si hay apphosting.ENVIRONMENT_NAME.yaml archivo antes y volverá a apphosting.yaml.

Paso 2: Crea el 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 y especificar anulaciones específicas del entorno. Este archivo tiene el mismo formato que el archivo apphosting.yaml predeterminado y deben ubicarse en el directorio raíz de tu app junto con apphosting.yaml.

Durante el tiempo de compilación, App Hosting combina estos dos archivos y se le da prioridad a valores en el archivo YAML específico del entorno en la base apphosting.yaml .

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, verse así:

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 también se reemplazaron ciertos valores de runConfig, como CPU como cualquier variable de entorno superpuesta.

Paso 3: Implementa tu base de código

Una vez que termines de editar el 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á la anulación específica valores especificados en el archivo YAML correspondiente y recurrir Es apphosting.yaml cuando no se encuentra un valor. Para backends sin un puedes seguir usando apphosting.yaml.

Próximos pasos