È, fondamentalmente, un problema di ridimensionamento. Separa il tuo lavoro in moduli, che possono essere diversi progetti e / o diverse funzionalità del tuo prodotto.
Avresti team che coprono set di questi moduli. Ognuno di questi team avrebbe impostato i cicli CI per i propri ambiti e solo dopo il passaggio dei rispettivi cicli, il codice verrebbe inviato ai repository principali, dove verrebbe eseguito il ciclo di configurazione principale.
Molto probabilmente il ciclo CI principale differisce dai cicli CI a livello di squadra in questi aspetti:
- I cicli CI a livello di team non devono creare il codice di tutta l'azienda, solo i moduli di cui sono responsabili ei moduli dipendenti. Se ci sono due moduli completamente indipendenti e in team diversi, non faranno parte del ciclo CI degli altri team.
- I cicli CI a livello di team possono avere test automatizzati molto più dettagliati rispetto al ciclo CI principale. Il ciclo CI principale avrebbe avuto test di verifica della sanità e test di regressione che, a seconda delle dimensioni della soluzione master, sarebbero eseguiti giornalmente o anche settimanalmente, poiché a volte questi test possono richiedere più di 24 ore di esecuzione.
Ciò che devi fare con questo approccio è quello di fornire la spinta automatica dai repository locali al repository centrale una volta che il ciclo locale dell'IC passa, per evitare che gli sviluppatori impieghino enormi quantità di tempo per spingere il codice ai repository centrali.