¿Pones comstackciones en un repository de código fuente?

Me gustaría get algunos comentarios sobre esta idea, ya que puedo ver los pros y los contras de cada enfoque. Como desarrollador de Java, se trata de almacenar files jar en el repository de código, pero podría extenderse fácilmente a otros lenguajes comstackdos.

Pros:

  • Puede recuperar fácilmente distribuciones previas, sin la necesidad de depender de herramientas desactualizadas (potencialmente no disponibles) para recomstackr.

Contras:

  • Podría "hinchar" rápidamente el repository de código, dependiendo de la frecuencia de construcciones.

Archivamos versiones en una estructura de directory y labelmos las versiones apropiadas en el control de fuente. Esto nos da acceso a las versiones comstackdas y la fuente que las generó.

Esto se hace fácilmente usando scripts de compilation para automatizar el labeldo y el file de versiones de lanzamiento.

Compromiso: almacenar herramientas y código fuente en repositorys y comstackciones de tags. De esta manera, siempre puedes volver a crear cualquier compilation de un producto.

Y siempre puede tener un repository separado para artefactos comstackdos.

Si puedes crear un sistema de compilation lo suficientemente bueno como para que sea trivial recrear una compilation exacta solo con la extracción del código, no creo que haya ninguna necesidad de almacenar tus comstackciones en el repository.

Para la mayoría de mis cosas, no almaceno comstackciones específicas de mi código, pero sí almaceno versiones específicas de las bibliotecas en las que mi código se basa. Puse mucho esfuerzo hace unos meses para que sea trivial cargar una label y escribir "ant" y todo se desarrolla correctamente sin depender de nada fuera del tree. (excluyendo el javac y la ant correctos)

Desafortunadamente, parte de nuestra base de código no tiene un sistema de compilation tan bueno (es decir, requiere la installation manual de SDK y capturar varias bibliotecas externas y variables de entorno) y sería difícil recrear exactamente una versión específica de una compilation basada en repository (estamos avanzando constantemente y no soportamos el código antiguo, por lo que la estación de trabajo de los desarrolladores está lo suficientemente cerca como para que aún no se haya quemado al tener que volver a una antigua twig antes de nuestra versión actual) y en ese caso , almacenamos nuestras comstackciones de lanzamiento (para el inevitable dedo gordo "oh no, estaba en el server equivocado haciendo algunas testings" o algo igualmente insidioso).

Guardo las construcciones en una carpeta en el server, y están respaldadas regularmente. Pero etiqueto la revisión que representa esa compilation. En la carpeta de compilation, almaceno no solo los ejecutables, binarys o páginas (nuestro caso es ASP.Net), sino también los scripts de cambio que obtenemos de SQL Delta.

Las tags se nombran con el mismo identificador que los campos, por lo que si tiene la compilation "System_2009-07-30-01", tendrá una label con ese nombre. Entonces, si necesita arreglar algo, simplemente mire el nombre de la construcción, mire la label y luego mire la revisión que necesita para ver qué puede estar pasando.

No creo que haya una buena razón para versionar la compilation real. Etiquete la versión de origen y haga que solo un grupo controlado tenga acceso para cambiar las tags. Una label de compilation nunca debe tener un checkin hecho por lo que debe ser trivial para recrear la compilation.

Buscamos labelr el repository para cualquier compilation para que podamos get la fuente real de cualquier número de compilation y luego comprimir y cargar los files de compilation realmente publicados que se implementan realmente, solo para asegurarnos de que no haya ajustes furtivos de última hora, etc. durante la implementación que no están reflejados en el tronco mismo.

Creo que es apropiado almacenar resultados de compilation en el sistema de control de versiones. Tanto para probar una versión específica de una compilation como para facilitar ciertas tareas de desarrollo.

Sin embargo, debe asegurarse de que también mantendrá todo lo que se necesitaría en el repository para recrear esa compilation exacta si fuera necesario. Debe usar labeldo / labeldo consitente para facilitar esto. Es posible que deba probar una corrección de errores con diferentes versiones de varios componentes, y dependiendo de la complejidad de su sistema en general, es posible que desee probar diferentes combinaciones.

A veces. La mayoría de las veces la respuesta es no, pero aún hay escenarios en los que, si tiene sentido, hazlo.

Como un aparte, me sorprende que todavía esté abierto. Estas preguntas tipo discusión generalmente se votan cerradas en less de 5 minutos.

Para mitigar la preocupación de que las herramientas de compilation antiguas no funcionen en un entorno más nuevo, archivamos nuestras imágenes de la máquina de compilation para las principales versiones. Es fácil de hacer para nosotros porque nuestras máquinas de construcción están virtualizadas. Es el plan B en caso de que otros medios no funcionen.

Coloque lanzamientos específicos de clientes en el repository.
En teoría, esto no es necesario, ya que siempre podemos reproducir esa versión, pero es bueno poder get el .msi exacto que se envió a un determinado cliente en una date determinada; luego lo probamos en una versión virtual limpia.

Una razón es que te protege contra cualquier cambio fuera de tu entorno de construcción, como por ejemplo Windows o la actualización de Visual Studio. ¡Es posible que no puedas reproducir una compilation bit-bit de un msi si msi se ha actualizado!

Creo que las fonts, las dependencies, los binarys y las herramientas de compilation deben ser versionadas juntas … Esta es la única forma de rastrear lo que está sucediendo con los grandes proyectos, donde el lanzamiento final proviene de muchos proyectos fuente …