Integração contínua como termo refere-se a duas idéias distintas.
O primeiro é um fluxo de trabalho: em vez de todos em uma equipe trabalharem em seu próprio ramo e, depois de algumas semanas de programação, tentar mesclar suas mudanças na linha principal, essas mudanças são integradas (quase) continuamente. Isso permite que os problemas apareçam mais cedo e evita alterações incompatíveis. No entanto, isso exige que possamos verificar facilmente se uma alteração "funciona".
É aí que entra a segunda idéia, que se tornou muito mais popular. Um servidor de IC é um ambiente limpo, onde as alterações são testadas o mais rápido possível. O ambiente limpo é necessário para que a construção seja reproduzível. Se funcionar uma vez, deve sempre funcionar. Isso evita problemas "mas funcionou na minha máquina". Em particular, um servidor de IC é valioso quando o software é executado em sistemas diferentes ou em configurações diferentes e você precisa garantir que tudo funcione.
A falta de uma etapa de construção é irrelevante. No entanto, o IC só faz sentido se você tiver um conjunto de testes. Este conjunto de testes deve ser automático e não deve ter falhas. Se os testes falharem, o desenvolvedor apropriado deve receber uma notificação para que possa corrigir o problema que apresentou ("interromper a compilação", mesmo quando não houver compilação como compilação).
Acontece que esse servidor é valioso para mais do que apenas testar. De fato, a maioria dos softwares de CI é realmente ruim para executar testes em várias configurações, mas boa para gerenciar todos os tipos de tarefas. Por exemplo, além dos testes de unidade "contínuos", pode haver um teste completo como uma construção noturna. O software pode ser testado com várias versões do Python, diferentes versões da biblioteca. Um site pode ser testado para links mortos. Podemos executar análises estáticas, verificadores de estilo, ferramentas de cobertura de testes etc. sobre o código. Documentação pode ser gerada. Quando todos os conjuntos de testes forem aprovados, o processo de empacotamento poderá ser iniciado para que você esteja pronto para lançar seu software. Isso é útil em uma configuração ágil, na qual você deseja um produto implantável (e demonstrável) o tempo todo. Com o surgimento de aplicativos da web, há também a ideia de implantação contínua: Se todos os testes forem aprovados, podemos enviar automaticamente as alterações para a produção. Obviamente, isso exige que você esteja realmente confiante em sua suíte de testes (caso contrário, você terá problemas maiores).