Quando o código é enviado, as ferramentas de CI verificam cada integração criando uma iteração da compilação e executando uma bateria de testes automatizados para detectar e lidar com erros de integração de forma mais rápida.
A CI foi criada como uma resposta aos desafios do desenvolvimento de softwaretradicional, ou seja, os processos associados à integração e implementação. No desenvolvimento tradicional, cada desenvolvedor era responsável por integrar manualmente o novo código em novas iterações de um aplicativo ou serviço, tornando a integração um processo lento e propenso a erros, especialmente para grandes equipes de desenvolvimento.
Diferentes partes do código nem sempre funcionavam bem juntas, e os desenvolvedores integravam suas alterações em diferentes cronogramas (e, às vezes, no último minuto). Então, o feedback sobre problemas de integração frequentemente era atrasado. Atrasos relacionados a integrações inconsistentes tornavam mais difícil para as equipes descobrir qual mudança introduziu o bug e, portanto, a depuração também se tornava um processo árduo.
Além disso, os testes de software eram pouco frequentes, com grandes atualizações em lote feitas de uma só vez; então, os bugs podiam passar despercebidos e se acumular na base do código, levando a erros e falhas para os usuários finais. (E uma solução de problemas mais difícil para os desenvolvedores).
As ferramentas de CI, que são fundamentais para as práticas modernas de DevOps , os pipelines de integração contínua/implementação contínua (CI/CD) e as arquiteturas de microsserviços , ajudam a simplificar o processo de criação, fornecendo feedback rápido sobre o desempenho da integração.
Com um sistema de CI, o novo código é adicionado a um repositório central (normalmente, várias vezes ao dia), onde permanece para construção e testes. Se o sistema detectar um erro, ele envia notificações, corrige o código e confirma se o código atualizado está correto antes de mesclá-lo totalmente com a base de código.
Consequentemente, a abordagem de CI permite que as equipes de desenvolvimento de software detectem e corrijam erros antes que eles afetem o desempenho do software, resultando em software de alta qualidade e cronogramas de entrega mais previsíveis.