Na minha empresa, é comum não fazer nenhuma compilação intermediária para verificar como cada ramo do recurso / correção de bug é mesclado no dev. Há apenas compilação diária, que sempre provoca muitas falhas de teste e erros de compilação. Foi-me dito que não é razoável criar compilações para cada mesclagem para mais de 1000 desenvolvedores.
Então, pesquisei como o IC é organizado em empresas que possuem tantos desenvolvedores ou mais (Microsoft, Facebook) e não encontrei nada. Talvez os especialistas possam me dizer então?
Respostas:
É, 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:
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.
fonte
Além do que o @Vladimir_Stokic disse, em algumas equipes (a minha tem ~ 150 desenvolvedores), construímos com mais frequência do que a cada 24 horas. Sempre que ocorre uma confirmação, iniciamos um cronômetro de 5 minutos. Após os 5 minutos, todas as confirmações ocorridas durante o intervalo de 5 minutos são combinadas e construídas. A compilação geralmente é uma compilação incremental. Temos um construtor separado que executa testes de unidade para cada construção que ocorre. Após a conclusão da construção, se houver mais confirmações durante a construção (que leva entre 1 e 45 minutos, dependendo da alteração), quaisquer alterações pendentes são construídas e assim por diante. Também temos uma compilação noturna (limpa, completa), mas as compilações que ocorrem em cada confirmação (aproximadamente) nos informam muito rapidamente se algum teste falha.
fonte