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?



@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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.