Soy parte de un grupo de desarrollo con 5 equipos, un total de aproximadamente 40 desarrolladores. Estamos siguiendo la metodología Scrum, con sprints de 3 semanas. Tenemos una configuración de integración continua (Jenkins), con una tubería de construcción que demora varias horas (debido a extensas pruebas automatizadas). Básicamente, el proceso de desarrollo funciona bien.
Sin embargo, observamos que después de unos días en un nuevo sprint, nuestra construcción a menudo se vuelve inestable y permanece inestable hasta que el sprint finaliza "commit stop". El efecto adverso de esto es que los pasos de compilación en el futuro, especialmente las pruebas de IU / Web no se ejecutan durante varios días (porque solo se activan en una compilación 'verde'). En consecuencia, los errores recientemente introducidos a menudo solo se detectan muy tarde en el sprint.
- Cada confirmación se verifica contra un conjunto básico de pruebas. Una vez verificado, el cambio se envía al maestro después de una revisión de código (Gerrit)
- Las pruebas unitarias básicas se ejecutan cada 30 minutos, duración inferior a 10 minutos
- Las pruebas de integración se ejecutan cada 2 h, duración 1 h
- UI- / Webtests se ejecutan en pruebas de integración exitosas, duración varias horas
Dependiendo de quién sea responsable de la estabilidad de la construcción durante el sprint (esa responsabilidad se transfiere por sprint), puede haber "paradas de compromiso" intermedias y ad-hoc para que la construcción vuelva a ser estable.
Entonces, queremos:
- Nuestros equipos de desarrollo para desarrollar y cometer cambios durante un sprint sin obstáculos
- Nuestro proceso de compilación se abandonará si falla un paso de compilación, ya que los resultados de compilación posteriores tienen poco significado
- Nuestro proceso de construcción para brindar a los desarrolladores comentarios de calidad de manera oportuna
Dado (2), los puntos (1) y (3) parecen contradecirse entre sí. ¿Alguien tiene una buena práctica de cómo lidiar con esto?
( Actualmente estamos aflojando el punto (2), y estamos permitiendo la continuación de la construcción incluso en los pasos de construcción fallidos. Todavía no tengo comentarios sobre cómo eso influye en nuestra calidad )
Gracias simon
several hours
, ese es el verdadero problema. significa que la solución combinada es demasiado grande y demasiado amplia. Debe buscar componentes de la solución y luego tener pequeños fragmentos de código como paquetes (disponibles de una forma u otra en todos los idiomas principales en todas las plataformas). Por lo tanto, cualquier cambio iría solo a los componentes y se detectará mucho más rápido. La compilación completa esencialmente solo juntará componentes ya combinados, y también será más rápido. Entonces, posiblemente solo ejecute algunas pruebas para asegurarse de que se hayan resuelto los componentes correctos.