Ir al contenido

Environment Merge

La función Environment Merge te permite aplicar cambios de esquema de un entorno (fuente) a otro (destino). Esta es la operación central que propaga cambios estructurales — como nuevas tablas, columnas, vistas y enums — a través de tu ciclo de vida de desarrollo.


El proceso de merge está diseñado para ser seguro, predecible y transparente:

  1. Selección: Selecciona un entorno fuente (donde se originaron los cambios) y un entorno destino (donde quieres aplicarlos).
  2. Análisis: El sistema realiza un diff para identificar todos los cambios faltantes en el entorno destino.
  3. Revisión y Cherry-pick: Revisa los cambios detectados y elige selectivamente cuáles aplicar.
  4. Copia de seguridad automática: Antes de aplicar cualquier cambio, Archie Core crea una copia de seguridad completa de los datos y estructura del entorno destino.
  5. Aplicación atómica: Los cambios seleccionados se aplican como una sola operación. Si cualquier parte del merge falla, toda la operación se revierte automáticamente.

Archie Core garantiza la integridad de tus entornos de producción y staging durante un merge:

  • Actualizaciones transaccionales: Todos los cambios de esquema se aplican dentro de una sola transacción. Esto significa que o todos los cambios seleccionados se aplican correctamente, o ninguno — evitando que tu base de datos entre en un estado de migración parcial.
  • Bloqueo de entorno: Mientras un merge está en progreso, el entorno destino se bloquea para prevenir cambios de configuración concurrentes.
  • Copias de seguridad pre-merge automáticas: Siempre se crea una copia de seguridad de “red de seguridad” inmediatamente antes de la ejecución. Si un merge tiene éxito pero descubres un problema después, puedes restaurar al estado exacto antes del merge usando la página Backups.

La interfaz de merge permite control granular sobre qué se mueve:

  • Selección individual: Activa o desactiva cambios específicos (como la adición de una columna o un nuevo índice) sin fusionar toda la rama.
  • Acciones de grupo: Selecciona o deselecciona rápidamente todos los cambios relacionados con una tabla o vista específica.
  • Protección contra cambios rompientes: Las operaciones destructivas (como eliminar una columna) no están preseleccionadas por defecto. Debes optar explícitamente por estos cambios para prevenir pérdida accidental de datos.

Cada operación de merge se registra en un registro de auditoría centralizado. La página Historial de un entorno muestra:

  • Registro de auditoría: Quién inició el merge, qué entornos estuvieron involucrados y cuándo ocurrió.
  • Resumen de cambios: Un desglose claro de qué se creó, modificó o eliminó.
  • Trazabilidad: Documentación de los comandos SQL específicos ejecutados durante la migración.
  • Enlace a backup: Acceso directo a la copia de seguridad automática creada específicamente para esa migración.

Si necesitas revertir un merge, debes usar la página Backups para restaurar el entorno a su estado “Pre-merge”.

Nota: A diferencia de un simple deshacer, una operación de restauración revierte toda la base de datos a un punto anterior en el tiempo. Recomendamos verificar los cambios en un entorno de staging antes de fusionar en producción.


mutation MergeEnvironments($input: MergeEnvironmentInput!) {
mergeEnvironments(input: $input) {
success
message
migrationId
changesApplied
backupId
}
}
query MigrationHistory($projectId: ID!, $environment: String) {
migrationHistory(projectId: $projectId, environment: $environment) {
id
sourceEnvironment
targetEnvironment
status
appliedBy
appliedAt
changes {
changeType
objectName
sql
isBreaking
}
backupId
}
}