Casos de uso de deployment
Los siguientes escenarios asumen la existencia de un control de versiones para el proyecto e instalaciones remotas.
Desarrollo en equipo
Cuando trabajamos en equipo con la herramienta , cada puesto de desarrollador que tenga su propia base de metadatos debe definir un Id. de desarrollo único en el grupo, creando un namespace para la creación de nuevos componentes. Ej. si tengo un id_desarrollo 35 los las nuevas definiciones que arme van a comenzar en 35.000.0000. Una vez acordado y configurado esto correctamente, en el día a día de desarrollo se debe realizar los siguientes pasos para no corromper los metadatos ni descartar cambios de compañeros:
Antes de realizar una actualización vía svn (
svn update
), si he realizado algún cambio de metadatos en mi instancia debo exportarlos al sistema de archivos:toba proyecto exportar -p mi_proyecto
Si luego de actualizar el proyecto (
svn update
) se actualizan archivos en la carpeta metadatos, indica que alguien del equipo subio cambios sobre componentes,operaciones, etc. Antes de empezar la edición debo regenerar el proyecto para tomar esos cambios:toba proyecto regenerar -p mi_proyecto
Una forma alternativa de tener estos tres pasos (proyecto exportar - svn update - proyecto regenerar) es usar el siguiente comando
toba proyecto actualizar -p mi_proyecto
Tener en cuenta de siempre monitorear la salida de este comando,
especialmente cuando ejecuta el svn update
ya que si ocurre algún
error (ej. no esta autenticado, no existe el comando) o ocurre un
conflicto.
Luego de tomar los cambios del resto del equipo y trabajar sobre el proyecto debemos subir nuestros cambios al repositorio. Para que se suban los metadatos modificados debo antes exportarlos:
toba proyecto exportar -p mi_proyecto
Entonces resumiendo debemos siempre sincronizar metadatos del sistema de archivos (carpeta metadatos, son lo que en definitiva se guardan en el svn y se lanzan con la version) con los metadatos vivos de la instancia (aquellos que podemos editar usando toba_editor). Cuando actualizamos los 1eros (svn update) debemos regenerar los 2dos (proyecto regenerar). Cuando cambiamos los 2dos (toba_editor) y queremos subirlos al svn (svn commit) debemos antes exportarlos (proyecto exportar).
Pasaje Desarrollo - Producción (usando instalador gráfico)
Ver [referencia/Instalador Generación del paquete] de instalación para producción
Pasaje Desarrollo - Producción (manual)
El escenario más común es tener una única instancia de desarrollo y actualizar otra instancia (generalmente Producción o Testing) de manera periódica. Este escenario puede describirse en cinco pasos:
Desarrollo - Exportación de metadatos: Siempre en desarrollo los últimos metadatos se encuentran en la base de datos (la instancia) y no en el sistema de archivos, esto es lógico porque los desarrolladores estuvieron utilizando el Editor en forma conjunta con esta instancia. La exportación se hace de la siguiente forma:
toba proyecto exportar -p mi_proyecto
Desarrollo - Commit de los nuevos archivos: El resultado de la exportación es la actualización de los archivos ubicados en la carpeta metadatos del proyecto. Junto a las modificaciones de código existentes se suben las modificaciones (commit) creando una nueva revisión, almacenada en un repositorio central.
Producción - Actualización de la nueva revisión: Suponiendo que se toma la decisión de actualizar el sistema en producción, el primer paso es actualizar el proyecto en cuestión, esto traerá los metadatos y el código actualizado.
Producción - Exportación de información local: Lo único que se necesita de la instancia en producción son sus usuarios, logs y demás metadatos considerados locales o propios de la instancia, para el resto de los metadatos valen los de desarrollo. Entonces es necesario exportar los datos locales de esta instancia almacenándose en el sistema de archivos:
toba instancia exportar_local
Producción - Regenerar el proyecto: Ahora que tanto los metadatos de desarrollo como los de los usuarios se encuentran en el sistema de archivos es posible regenerar el proyecto:
toba proyecto regenerar -p mi_proyecto
Pasaje Desarrollo - Producción (incluyendo usuarios)
Desarrollo - Exportación de metadatos: Siempre en desarrollo los últimos metadatos se encuentran en la base de datos (la instancia) y no en el sistema de archivos, esto es lógico porque los desarrolladores estuvieron utilizando el Editor en forma conjunta con esta instancia. La exportación se hace de la siguiente forma:
toba proyecto exportar -p mi_proyecto
Desarrollo - Commit de los nuevos archivos: El resultado de la exportación es la actualización de los archivos ubicados en la carpeta metadatos del proyecto. Junto a las modificaciones de código existentes se suben las modificaciones (commit) creando una nueva revisión, almacenada en un repositorio central.
Desarrollo - Copiar la carpeta
toba/instalacion/i__<instancia>
a producción. Esta carpeta contiene las .sql de los usuarios y como se vinculan al proyecto. Además contiene los logs de acceso y de aplicación, pueden borrarse estos archivos para no pasar el historial de desarrollo.Producción - Actualización de la nueva revisión: El primer paso es actualizar el proyecto en cuestión, esto traerá los metadatos y el código actualizado.
Producción - Regenerar la instancia: Ahora que tanto los metadatos de desarrollo como los de los usuarios se encuentran en el sistema de archivos es posible regenerar la instancia. Ante la pregunta Desea EXPORTAR antes la informacion local de la INSTANCIA? responder NO, sino se perderá la información de usuarios traida desde desarrollo:
toba instancia regenerar
Actualización de Toba
Muchas veces es necesario actualizar la versión de toba con la que se está desarrollando (arreglo de bugs, nuevas funcionalidades deseadas, etc.), para esto hay que tener el cuidado de exportar los metadatos previo a la actualización, ya que actualizar toba muchas veces (no todas) implica regenerar la instancia.
Exportar Metadatos del proyecto: Como los últimos metadatos se encuentran en la base de datos (la instancia) es necesario llevarlas al sistema de archivos y versionarlos. Para cada proyecto propio ubicado en esta instancia se debe hacer:
toba proyecto exportar -p mi_proyecto
Actualizar Toba: Se actualiza la nueva revisión de Toba desde el repositorio SVN.
Actualización de metadatos: Es posible que la nueva versión requiera alguna migración automática (ver Versiones Toba), para ello ejecutar:
toba instalacion migrar
Por si la migración afecta algún metadato del proyecto es necesario volver a exportar al sistema de archivos:
toba proyecto exportar -p mi_proyecto
Con los nuevos metadatos de toba y los metadatos exportados del proyecto en el sistema de archivos es necesario volver a cargar la instancia:
toba instancia regenerar
Cabe notar que instancia regenerar
como primer paso borra el contenido
de la base, por lo que si la exportación no se efectuó o se efectuó con
errores se perderán los datos del proyecto y sólo será posible
recuperarlos desde alguna revisión del SVN del proyecto o algún backup
manual.
Hay una razón por la cual la exportación se debe hacer antes que la actualización de código. Es posible que el nuevo código de toba haga referencia a nuevas columnas o nuevos campos no presentes en la instancia actual del proyecto (porque fue creada usando un toba más viejo). Si se quiere hacer la exportación luego de la actualización, este nuevo código va a querer exportar esta estructura de base de datos nueva no presente en la instancia actual, imposibilitando la extracción de los metadatos hacia el sistema de archivos. Hay una solución a este error, siempre y cuando no se haya ejecutado el tercer paso por la razón explicada en el párrafo anterior. La solución es volver atrás la revisión de toba a la misma con la que se generó la instancia y reiniciar el proceso.
Múltiples Instalaciones
Para tener mútliples instalaciones de Toba en una misma máquina se deben tener en cuenta ciertas pautas adicionales a las básicas descriptas del proceso de Instalación.
- En el
include_path
de PHP no debe estar incluído ninguna referencia a alguno de los toba instalados.
- Para ejecutar scripts administrativos (del tipo instancia o proyecto, por ejemplo) vamos a necesitar previamente agregar al path la ubicación de los mismos, además de setear el valor de las variables de entorno toba_dir y toba_instancia. El detalle de cómo crear estos ambientes se encuentra en la [referencia/Consola configuración de la consola].
- Además de tener varias carpetas conteniendo las diferentes versiones de Toba, vamos a configurar igual cantidad de alias para el framework.