En nuestro equipo de gran tamaño, también hacemos gated en la rama principal y CI en las ramas dev/feature (muchas de ellas).
Gated ofrece más protección para la sucursal, pero con un equipo muy grande y una gran base de código, puede respaldar la cola si todo el equipo de desarrollo está haciendo cambios en esa rama.
CI proporciona protección con un poco más de confianza en los desarrolladores, sabiendo también que cualquier problema quedará atrapado rápidamente. Es un poco más optimista y permite que el equipo se mueva mucho más rápido, lo que es apropiado para una rama de desarrollo.
En ambos casos, los desarrolladores ejecutan pruebas unitarias y prueban el código que están cambiando. CI (afecta al equipo) y Gated (consume tiempo en la cola) no deberían reemplazar las pruebas: debería haber una explicación plausible más compleja de lo que no lo intenté.
Todo el equipo está en las ramas/dev de desarrollo usando CI durante la mayor parte del ciclo y en las sucursales superiores con mucha más gente durante la estabilización final del juego. Ambas últimas condiciones respaldan el caso de la compuerta.
En un equipo grande, también necesitamos hacer que las compilaciones de CI y las pruebas continuas se realicen en paralelo para encontrar los problemas más rápidamente cuando los tiempos de construcción no son triviales y las pruebas completas tampoco son triviales. En ese escenario, la gente está haciendo check-in, el CI está recogiendo el último lote de checkin, ejecutando una compilación y cuando una compilación cae, otra máquina está recogiendo y ejecutando las suites de prueba.
¿Puede explicar con sus propias palabras la diferencia entre una compilación TRIGGERED y una INTEGRACIÓN CONTINUA? – kroonwijk
Kroonwijk; Corregí mi pregunta. Debe decir Check-in cerrado, no activado. –
¡Gracias! Ahora esta claro. – kroonwijk