Como é organizada a integração contínua em grandes empresas?

11

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?

Megamozg
fonte
@gnat Você é adequado? Como está relacionado? Pedi experiência privilegiada e apontei empresas apenas por exemplo. Não pedi nenhum suporte ao cliente.
Megamozg 11/08/19
11
@gnat Não vejo como isso está relacionado a isso. Megamozg: CI é organizado por módulo de projetos, não há módulo com 1000 desenvolvedores. Portanto, se houver muita gente, reduza o seu projeto / módulo em menor parte.
Walfrat 11/08
@Walfrat é totalmente relacionado. Este site não é para fazer pesquisas / pesquisas com especialistas de grandes empresas sobre como suas empresas fazem várias coisas. Se alguém está curioso sobre coisas como que eles deveriam usar canais de suporte dessas empresas
mosquito
@gnat Eu realmente não vejo como o link que você forneceu se aplica, especialmente com o comentário que você forneceu em resposta ao Walfrat. Baseado em que o comentário deste IMHO seria a ligação adequada (a parte sobre questões do tipo poll) softwareengineering.meta.stackexchange.com/a/6490
Newtopian

Respostas:

12

É, 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.

Vladimir Stokic
fonte
7

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.

user1118321
fonte