Nuestro sistema comprende muchos sitios web .NET, bibliotecas de clases y una base de datos MSSQL. Usamos SVN para control de fuente y TeamCity para compilar automáticamente a un servidor de prueba.¿Sugerencias para administrar dependencias para una versión?
Nuestro equipo normalmente trabaja en 4 o 5 proyectos a la vez. Tratamos de agrupar muchos cambios en un lanzamiento largish cada 2-4 semanas.
Mi problema es hacer un seguimiento de todas las dependencias para un despliegue. Ejemplo:
El sitio web A no se puede ejecutar hasta que hayamos desplegado la biblioteca B de Branch X of Class, construida a su vez contra la biblioteca C de Trunk of Class, que necesita Actualizaciones de configuración Y y Z y Database Update D, necesita script de migración e ...
se hace aún más compleja - como asegurarse de que el proyecto de cada desarrollador es en realidad compatible con los otros y están construyendo en contra de las mismas versiones. Sí, este es un problema de gestión tanto como un problema técnico.
Actualmente nuestra solución no óptima es:
- una pizarra lista de características que no han entrado en producción todavía
- confiar en nuestra memoria e intuición en la planificación de la implantación, hasta estamos bastante seguros hemos pensado en todo ...
- un funcionamiento en seco en nuestro entorno de ensayo. Es una buena indicación, pero a menudo no estamos seguros de si la puesta en escena está 100% sincronizada con Live, parte del problema que espero resolver.
- cierta cantidad de alas en el día de lanzamiento.
Hasta ahora todo bien, menos algunas llamadas cercanas. Pero a medida que nuestro sistema crece, me gustaría un sistema de administración de versiones más científico que permita más flexibilidad, como poder implementar un solo cambio o una corrección de errores por sí mismo, seguro sabiendo que no romperá ninguna otra cosa.
Supongo que la mejor solución implica algún tipo de sistema de numeración de versiones, y tal vez el uso de una herramienta de gestión de proyectos. Somos una empresa nueva, por lo que no estamos demasiado entusiasmados con la adhesión religiosa a procesos rígidos, pero estamos felices de comenzar, siempre que no agregue más gastos generales de los que vale.
Me encantaría escuchar los consejos de otros equipos que han resuelto este problema.
Los proyectos están en carpetas separadas en un único repositorio. Un ejemplo de la interdependencia es que nuestro sitio web, sitio móvil y API hacen referencia a la misma biblioteca de lógica de negocios. Eso, junto con algunos otros proyectos, hacen referencia a las mismas bibliotecas de utilidades. Estamos de acuerdo en que no estamos utilizando completamente CI, y me gusta la idea de ramas estables. Pero eso cuida el código. ¿Qué pasa con la base de datos, las configuraciones, los scripts de migración y otros factores? – realworldcoder
@Andrew: todo esto pertenece al lado de su código en su svn repo. –