Resumen del entorno.MSBuild: ¿automatizar la recopilación de scripts de migración db?
- aplicación Asp.net Web (fuente almacenado en SVN) de base de datos
- SQL Server. (El esquema de la base de datos (tablas/sprocs) se almacena en svn)
- La versión de db se sincroniza con la versión del ensamblado de la aplicación web. (almacenado en la tabla 'CurrentVersion')
- servidor hudson de CI que controla la aplicación web desde el repositorio y ejecuta el archivo personalizado msbuild para publicar/empaquetar la aplicación.
Mi secuencia de comandos msbuild actualiza la versión de ensamblaje de la aplicación web (Major.Minor.Revision.Build) en cada compilación. La 'Revisión' está configurada para la revisión svn actualmente desprotegida y 'Build' para el número de compilación de Hudson (incrementado en cada compilación automatizada).
De esta forma puedo hacer coincidir la aplicación con una revisión de troncal específica y obtener otras estadísticas de compilación a partir del número de compilación de Hudson.
Me gustaría automatizar la recopilación de scripts de migración (sprocs actualizados, etc.) para agregar al paquete zip. Supongo que al comparar la revisión svn del archivo db que aún no se ha implementado para la revisión que se está implementando, puedo encontrar qué archivos db han cambiado en el tronco desde la última implementación en esa base de datos/entorno.
Esto podría lograrse fácilmente llamando manualmente al comando svn diff -r REVNO:REVNO
para listar archivos .sql cambiados. Estos archivos podrían luego agregarse manualmente al paquete. Sería fantástico si esto pudiese automatizarse.
En primer lugar, me imagino que tendré que escribir una tarea personalizada para comprobar la versión de la base de datos que aún no se ha implementado. Después de eso estoy bastante inseguro. ¿Alguien tiene alguna sugerencia sobre cómo se lograría esto a través de una tarea msbuild ya sea existente o personalizada?
Finalmente tendré que autogenar una secuencia de comandos para agregar al paquete que actualiza la tabla de versión de la base de datos para que esté sincronizada con la aplicación.
Esta es una gran pregunta. Usamos un buen número de scripts de compilación, pero aún estoy luchando para obtener nuestro DB en SVN, a veces los desarrolladores pueden ser TAN resistentes al cambio :) –
Ok, encontré un comando svn que puede generar una lista de los archivos cambiados a un archivo xml Desde allí, debería poder procesar ese archivo xml a través de msbuild para obtener los archivos individuales que necesito para el espacio de trabajo de construcción. El '>;' el comando era la clave;) svn diff -r REVNO: REVNO --xml --summarizar "svn: // PathToTrunk">; d: /temp.xml –