Es, básicamente, un problema de escala. Separa su trabajo en módulos, que pueden ser diferentes proyectos y / o diferentes funcionalidades de su producto.
Tendría equipos que cubren conjuntos de esos módulos. Cada uno de esos equipos tendría ciclos CI configurados para sus alcances, y solo después de que sus respectivos ciclos pasaran, el código sería empujado a repositorios maestros, donde se ejecutaría el ciclo maestro CI.
El ciclo maestro de CI probablemente diferirá de los ciclos de CI de nivel de equipo en estos aspectos:
- Los ciclos de CI a nivel de equipo no tienen que construir el código de toda la compañía, solo aquellos módulos de los que son responsables y los módulos dependientes. Si hay dos módulos que son completamente independientes y en equipos diferentes, no serían parte del ciclo de CI del otro equipo.
- Los ciclos de CI a nivel de equipo pueden tener pruebas automatizadas mucho más detalladas que el ciclo de CI maestro. El ciclo Master CI tendría pruebas de verificación de cordura y pruebas de regresión que, dependiendo del tamaño de la solución maestra, se ejecutarían diariamente o incluso semanalmente, ya que estas pruebas a veces pueden tardar más de 24 horas en ejecutarse.
Lo que debe hacer con este enfoque es proporcionar un impulso automatizado desde los repositorios locales al repositorio central una vez que pase el ciclo de CI local, para que sus desarrolladores no gasten enormes cantidades de tiempo para empujar el código a los repositorios centrales.