Release build vs nightly build

13

Una solución típica es tener una compilación de CI (integración continua) en ejecución en un servidor de compilación: analizará el código fuente, creará (en depuración) y ejecutará pruebas, medirá la cobertura de la prueba, etc.

Ahora, otro tipo de compilación que generalmente se conoce es "compilación nocturna": haga cosas lentas como crear documentos de código, hacer un paquete de instalación, implementar en el entorno de prueba y ejecutar pruebas automáticas (humo o aceptación) contra el entorno de prueba, etc.

Ahora, la pregunta:

  • ¿Es mejor tener una tercera "Versión de lanzamiento" separada como versión de lanzamiento?
  • ¿O "compilación nocturna" en modo de lanzamiento y usarlo como lanzamiento?

¿Qué estás usando en tu empresa?

(La versión de lanzamiento también debería agregar algún tipo de etiqueta al control de origen de la versión potencial del producto).

    
pregunta Tuomas Hietanen 08.03.2011 - 14:09

4 respuestas

13

Un caso para que la versión de lanzamiento sea igual a la versión nocturna es: desea probar exactamente lo mismo que lanza . No desea descubrir errores en la producción que ya podrían haberse detectado en las pruebas de desarrollo.

La diferencia entre el lanzamiento y las compilaciones nocturnas:

  • la compilación nocturna se ejecuta automáticamente, bueno, todas las noches, mientras que la compilación de lanzamiento debe ejecutarse a mano en ciertos puntos en el tiempo
  • la versión de lanzamiento debería etiquetar / ramificar el código fuente, y posiblemente implementar los artefactos de construcción en un repositorio central (por ejemplo, al usar Maven)

Estas diferencias son, en la práctica, algunas opciones adicionales en la mayoría de los sistemas de gestión de compilación que conozco. Para minimizar la posibilidad de errores humanos, estos podrían guardarse, por ejemplo. en un archivo por lotes / script que toma solo los parámetros necesarios (y los valida).

    
respondido por el Péter Török 08.03.2011 - 14:14
7

¡Bueno, me gustaría que la versión de lanzamiento fuera lo más cercana posible a la noche! Lo ideal es exactamente lo mismo pero con una etiqueta.

El problema es que si la versión de lanzamiento y la noche no son lo mismo, existe la posibilidad de que lo que sea diferente pueda enmascarar un problema (o hacer que rastrearlo sea mucho más difícil).

    
respondido por el Zachary K 08.03.2011 - 14:13
3

Tendría un solo proceso de compilación, que compilaría todo en cada registro realizado por el servicio de CI. Eso sería tanto depuración como versiones de lanzamiento.

Tener dos o tres procesos separados es simplemente pedirles que comiencen a cambiar al azar sin estar documentados, y no pasará mucho tiempo antes de que alguien tenga que hacer 15 pasos por cada lanzamiento potencial para prepararse para salir. puerta.

    
respondido por el whatsisname 08.03.2011 - 15:46
2

Una cosa que me interesa hacer es poner la compilación nocturna en el modo de lanzamiento en lugar del modo de depuración. Con marcos de registro como log4net que reemplaza a System.Diagnostics.Debug, las principales diferencias entre los modos de Liberación y Depuración son la duración de los objetos y las optimizaciones de código.

A menos que en realidad vayas a adjuntar un depurador a tu compilación nocturna, también te sugiero que hagas esto.

El proceso que seguimos es que la compilación nocturna se ejecuta todas las noches y, si funciona, podemos implementar la misma compilación en nuestros otros servidores (sin reconstrucción, solo tome los instaladores empaquetados y ejecútelos). Si tenemos un problema con la compilación nocturna, verificamos los cambios en una sucursal y ejecutamos una compilación "nocturna" de esa sucursal durante el día. Las pruebas se pueden volver a ejecutar.

    
respondido por el Matthew Steeples 08.03.2011 - 14:34

Lea otras preguntas en las etiquetas