Pregunta

Leer esta publicación me ha dejado asombrado; ¿Las construcciones nocturnas son cada vez mejores para una situación que la integración continua? El consenso de las respuestas parece ser bastante desequilibrado a favor de la integración continua, ¿es ese evangelismo o realmente no hay razón para usar las construcciones nocturnas cuando la integración continua es una opción?

¿Fue útil?

Solución

Si realmente estás haciendo una integración continua con todas las pruebas disponibles, las compilaciones nocturnas serían redundantes, ya que lo último que se verificó ese día ya se habrá probado.

Por otra parte, si su régimen de CI solo implica ejecutar un subconjunto de todas las pruebas disponibles, por ejemplo, porque algunas de sus pruebas tardan mucho tiempo en ejecutarse, entonces puede usar nightlies además para ejecutar todas pruebas. Esto te permitirá detectar muchos errores antes de tiempo, y si no puedes detectarlos pronto, al menos podrás detectarlos durante la noche.

No sé, sin embargo, si eso es técnicamente todavía CI, ya que solo estás haciendo un " parcial " construir cada vez, ignorando algunas de las pruebas.

Otros consejos

En nuestra organización, las compilaciones nocturnas y las compilaciones de CI tienen dos propósitos distintos. La compilación de CI es una compilación de 'código más reciente' en la que las pruebas unitarias se ejecutan en el último registro como era de esperar. También ejecutamos varias métricas de código en la compilación de CI.

Sin embargo, para las compilaciones nocturnas, solo incorporamos el código fuente que ha pasado por el proceso de revisión por pares y se considera listo para la prueba.

De esta manera, la compilación nocturna siempre contiene una compilación que está 'lista para usar' para la prueba, mientras que la compilación de CI contiene características que, aunque son funcionales (en la medida en que las pruebas de unidad pasan), no están listas para enviarlas a la prueba. grupo.

Los grupos de prueba escriben nuevos CR exclusivamente de una de las compilaciones nocturnas en oposición a la compilación de CI, aunque también están disponibles para las pruebas de tipo de exploración informal.

Sí, si tiene un proceso que desea adjuntar a una compilación, pero tiene muchos recursos. Por ejemplo, en mi equipo ejecutamos JTest durante la compilación nocturna. No podemos ejecutarlo durante el día porque:

  1. Requiere muchos recursos, que pueden no estar disponibles
  2. Se tarda 4 horas en completarse cada vez

En mi opinión profesional, la única razón para usar compilaciones nocturnas es cuando el proceso de compilación toma tanto tiempo que no se puede completar de una manera razonable. cantidad de tiempo.

Por ejemplo, si su proceso de compilación tarda 5 horas en completarse, realmente no hay razón para realizar una compilación al momento del registro.

Más allá de eso, hay tanto valor en saber tan pronto como sea posible cuando falla una construcción que anula otras preocupaciones.

Depende del propósito y la duración de cada una de tus construcciones. Básicamente, debes identificar lo que estás tratando de aprender de CI y decidir si vale la pena gastar los recursos en la ejecución de varias compilaciones.

Utilizamos mi integración continua en mi último trabajo para diferentes propósitos.

Primero, lo usamos para asegurarnos de que el repositorio y, por lo tanto, los desarrolladores siempre tuvieran una versión del código que compiló. Pocas cosas son peores para los miembros del equipo que tener que administrar los cambios dañados de otra persona a través de comentarios, comentarios, revocaciones y combinaciones, porque una persona verificó el código incorrecto. Para esto, tuvimos una compilación que se ejecutó instantáneamente sin pruebas u otra validación, por lo que sabíamos lo antes posible si era seguro actualizar el código. Las compilaciones generalmente demoraban unos diez minutos y la máquina probablemente funcionaba alrededor del 50% en un día de trabajo normal. Aquí no se generó documentación, solo un pase silencioso o una sirena de falla ruidosa.

En segundo lugar, queríamos saber lo antes posible si se rompió alguna regla. Cuanto más rápido encuentre una regla rota, más fácil será corregirla. Para este propósito, teníamos una máquina separada que ejecutaba una compilación y validación completas del código. Esta máquina funcionaba de 12 a 14 horas diarias en un día normal de trabajo. El estado del correo electrónico de la compilación se envió describiendo pruebas unitarias rotas, cumplimiento de códigos, etc.

Nos detuvimos allí en cuanto a las compilaciones activadas automáticamente. Una construcción nocturna encima de eso parecía un poco extrema para nosotros. Pero supongo que si desea tener una compilación de instantáneas archivada diariamente, es posible que desee programar una tercera compilación con los pasos adicionales necesarios para ello. Sin embargo, tuvimos otra compilación que envolvió y archivó nuestros artefactos de implementación de control de calidad para una implementación rápida y fácil, pero solo activamos manualmente esa.

Si tiene un buen proceso de CI robusto en lugar de " nocturno " sigue siendo útil.

  1. Como se mencionó, un " nocturno " construir puede hacer pruebas exhaustivas y quizás algunas pruebas de sistemas de alto nivel. Cosas de extremo a extremo.
  2. El concepto de " nocturno " Construir es fácil de entender por todos en la organización. Si tiene problemas para comunicar, CI se desarrolla a otros grupos (por ejemplo, un grupo de control de calidad que no tiene el mismo control de Agile que el grupo de desarrolladores) una " cada noche " es un concepto poderoso y simple.
  3. Si su noche es un conjunto separado de recursos, puede administrarse por separado y usarse para cortar " oro " Imágenes con algunos reclamos de integridad de software. Por ejemplo, el desarrollador escribe código, algún sistema de compilación confiable que el desarrollador no puede tocar lo construye, QA prueba la construcción dorada y la firma. En tal situación, la compilación nocturna funciona como un sistema de compilación de producción.

Sólo algunos pensamientos.

Creo que las otras publicaciones cubren las razones más comunes, como tener un proceso de compilación que demore demasiado "" o tener que ejecutar solo un subconjunto de pruebas durante la compilación de CI. Pero hay otra razón que es política.

En algunas organizaciones, las compilaciones oficiales son manejadas por un equipo de SCM / administración de lanzamiento / infraestructura con capacidad de respuesta mínima. En estos casos, puede ponerlos a cargo de la compilación nocturna y luego ejecutar la compilación de CI fuera de desarrollo. Esto evita una pelea porque su compilación sigue siendo " la compilación oficial " y su compilación de CI le proporciona los comentarios que necesita.

Tenemos tanto una integración continua como construcciones nocturnas en su lugar. Sirven para dos propósitos diferentes.

Nuestro mecanismo de integración continua construye el software y ejecuta pruebas unitarias bajo el paquete de integración continua.

Nuestra compilación nocturna etiqueta la fuente bajo el control de versiones, compila el software, ejecuta las pruebas unitarias bajo el conjunto de compilación nocturna. El software creado aquí se utiliza en varias pruebas del sistema y pruebas de estrés.

Creo que uno de los diferenciadores principales para la construcción nocturna son las pruebas del sistema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top