> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Aprenda a admitir flujos de trabajo multiinquilino y multientorno al usar Auth0 Deploy CLI.

# Incorpórelo en flujos de trabajo multientorno

Deploy CLI permite trabajar en un contexto multiinquilino y multientorno. Cuando se integra en sus flujos de trabajo de desarrollo de CI/CD, se puede usar para propagar cambios de Auth0 desde el desarrollo de funcionalidades hasta producción.

En general, el flujo de trabajo recomendado es el siguiente:

1. Cree un Tenant de Auth0 independiente para cada entorno (desarrollo, ensayo, producción).
2. Cree un único repositorio de archivos de configuración de recursos para todos los entornos.
3. Agregue un paso a su flujo de CI/CD para los despliegues en los distintos entornos que aplique las configuraciones de recursos de Auth0 al Tenant de Auth0 correspondiente.

<div id="tenant-to-environment">
  ## Tenant por entorno
</div>

Se recomienda tener un Tenant o una cuenta de Auth0 independientes para cada entorno. Por ejemplo:

| Entorno       | Tenant          |
| ------------- | --------------- |
| Desarrollo    | `travel0-dev`   |
| Pruebas       | `travel0-uat`   |
| Preproducción | `travel0-stage` |
| Producción    | `travel0-prod`  |

<div id="resource-configuration-repository">
  ## Repositorio de configuración de recursos
</div>

Al exportarse, el estado de tu Tenant de Auth0 se representará como un conjunto de archivos de configuración de recursos, ya sea en [formato YAML o de directorio](/es/docs/deploy-monitor/deploy-cli-tool/available-resource-configuration-formats). En un contexto multientorno, se espera contar con un único repositorio de configuraciones de recursos que se aplique a todos los entornos. En la práctica, puede ser un directorio dentro de la base de código de tu proyecto o incluso una base de código independiente.

Debes tener al menos una rama para cada Tenant en tu repositorio, lo que te permite hacer cambios sin desplegarlos. De este modo, los cambios solo se desplegarán cuando fusiones la rama de trabajo en la rama principal (como `main` o `master`). Con esta configuración, puedes tener una tarea de integración continua para cada entorno que despliegue automáticamente los cambios en el entorno de destino cada vez que la rama principal reciba actualizaciones.

Tu flujo de trabajo podría verse así:

1. Haz cambios en desarrollo.
2. Fusiona los cambios en testing (o uat).
3. Prueba los cambios en uat. Cuando estén listos, mueve y fusiona los cambios a staging.
4. Prueba staging. Cuando esté listo, mueve y fusiona los cambios a producción.

Como medida de precaución, quizá te convenga configurar tu entorno de producción para que se despliegue solo cuando se active manualmente.

<div id="unidirectional-flow">
  ## Flujo unidireccional
</div>

El flujo de trabajo multientorno funciona mejor cuando los cambios se propagan «hacia arriba» en una sola dirección. Los cambios en los archivos de configuración de recursos deben aplicarse primero al entorno de nivel más bajo (como desarrollo) y luego aplicarse de forma incremental al resto de los entornos hasta llegar a producción. Esta práctica unidireccional garantiza que los cambios en su Tenant se sometan a pruebas y aprobaciones suficientes. Una vez definido este proceso, se recomienda no aplicar configuraciones directamente en producción por otros medios, como el <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> o la <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip>, a menos que esos cambios se recojan en una exportación posterior de Deploy CLI. De lo contrario, esos cambios pueden sobrescribirse.

<div id="environment-specific-values">
  ## Valores específicos del entorno
</div>

Aunque se espera que todos los entornos compartan el mismo conjunto de archivos de configuración de recursos, los valores específicos del entorno pueden definirse mediante archivos de configuración de la herramienta independientes y el [reemplazo de palabras clave](/es/docs/deploy-monitor/deploy-cli-tool/keyword-replacement) dinámico.

<div id="separate-configuration-files">
  ## Archivos de configuración separados
</div>

Usar un archivo de configuración de la herramienta independiente para cada entorno permite mantener los archivos de configuración de recursos agnósticos del entorno y, al mismo tiempo, satisfacer las necesidades de cada uno. Como mínimo, deberá proporcionar credenciales independientes para cada entorno, pero también puede excluir determinados recursos, habilitar la eliminación y realizar reemplazo dinámico de palabras clave para cada entorno.

<div id="example-file-structure">
  ### Estructura de archivos de ejemplo
</div>

```text lines theme={null}
project-root
│
└───auth0
│   │   config-dev.json   # Archivo de configuración del entorno de desarrollo
│   │   config-test.json  # Archivo de configuración del entorno de pruebas
│   │   config-prod.json  # Archivo de configuración del entorno de producción
│   │   ... todos los demás archivos de configuración de recursos
│
└───src
    │   ... el código de tu proyecto
```

<div id="dynamic-values-with-keyword-replacement">
  ## Valores dinámicos con reemplazo de palabras clave
</div>

Una vez que se utilizan archivos de configuración independientes para cada entorno, puede usar el reemplazo de palabras clave mediante la propiedad de configuración `AUTH0_KEYWORD_REPLACE_MAPPINGS` para definir valores de reemplazo dinámicos según el entorno. Por ejemplo, puede que necesite tener un conjunto independiente de orígenes permitidos para sus clientes. Para obtener más información, consulte [Reemplazo de palabras clave](/es/docs/deploy-monitor/deploy-cli-tool/keyword-replacement).

<div id="example-config-devjson">
  ### Ejemplo de config-dev.json
</div>

```json lines theme={null}
{
  "AUTH0_DOMAIN": "travel0-dev.us.auth0.com",
  "AUTH0_CLIENT_ID": "PdwQpGy62sHcsV6ufZNEVrV4GDlDhm74",
  "AUTH0_ALLOW_DELETE": true,
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "ENV": "dev",
    "ALLOWED_ORIGINS": ["http://localhost:3000", "http://dev.travel0.com"]
  }
}
```

<div id="example-config-prodjson">
  ### Ejemplo de `config-prod.json`
</div>

```json lines theme={null}
{
  "AUTH0_DOMAIN": "travel0.us.auth0.com",
  "AUTH0_CLIENT_ID": "vZCEFsDYzXc1x9IomB8dF185e4cdVah5",
  "AUTH0_ALLOW_DELETE": false,
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "ENV": "prod",
    "ALLOWED_ORIGINS": ["http://travel0.com"]
  }
}
```
