É, basicamente, um problema de escala. Você separa seu trabalho em módulos, que podem ser diferentes projetos e / ou diferentes funcionalidades do seu produto.
Você teria equipes que cobrem conjuntos desses módulos. Cada uma dessas equipes teria ciclos de IC configurados para seus escopos e, somente após a passagem dos respectivos ciclos, o código seria enviado para repostos mestre, onde o ciclo de IC mestre seria executado.
O ciclo do IC principal provavelmente diferirá dos ciclos de IC no nível da equipe nestes aspectos:
- Os ciclos de IC no nível da equipe não precisam criar o código de toda a empresa, apenas os módulos pelos quais eles são responsáveis e os módulos dependentes. Se houver dois módulos que sejam completamente independentes e em equipes diferentes, eles não farão parte do ciclo de IC da outra equipe.
- Os ciclos de IC no nível da equipe podem ter testes automatizados muito mais detalhados do que o ciclo do IC mestre. O ciclo do IC mestre teria testes de verificação de integridade e testes de regressão que, dependendo do tamanho da solução principal, seriam executados diariamente ou até semanalmente, pois esses testes às vezes levam mais de 24 horas para serem executados.
O que você deve fazer com essa abordagem é fornecer envio automatizado de repositórios locais para repositório central quando o ciclo do IC local passar, para que seus desenvolvedores gastem muito tempo para enviar o código aos repositórios centrais.