Introdução
O processo de integração contínua tem como principal objetivo garantir que cada atualização do código-fonte não gere regressões e/ou anomalias em um aplicativo em desenvolvimento.
Historicamente, a integração contínua tem sido utilizada pela IBM para desenvolver o OS/360 desde os anos 60.
A integração contínua não é uma ferramenta, mas sim uma prática resultante do "eXtreme Programming (XP)".
Os desenvolvedores de um mesmo aplicativo reintegram o programa em que eles trabalham o mais frequentemente possível. Trata-se de desencadear, à cada integração, um processo que se baseia em uma plataforma que verifica, automaticamente, o funcionamento do aplicativo para que as anomalias sejam detectadas quando entradas.
O mais difícil para um desenvolvedor é refletir sobre o real impacto de uma atualização fundamental em todas as funcionalidades da aplicação. A integração contínua pode dar ao desenvolvedor a visão mais geral sobre a aplicação, uma vez que os testes da aplicação são feitos em um ambiente clone de produção.
Palavras-chave
- Build: É o conjunto de passos necessários para compilar, criar entregas na execução dos testes (funcional, unitários, IHM, etc.)
- Commit: É a operação que permitirá a validação das atualizações do código-fonte no diretório local de trabalho da máquina do desenvolvedor, através da ferramenta de gerenciamento de configuração (como SVN). O commit é feito do diretório local de trabalho para o repositório da ferramenta de gerenciamento de configuração.
- Update: Esta operação permite a atualização a partir do repositório da ferramenta de gerenciamento de configuração do diretório local.
- Checkout: É a operação de extração de uma versão de um projeto em desenvolvimento do repositório do gerenciador de configuração em um diretório local de trabalho.
Cenário geral
- O desenvolvedor faz o seu commit no repositório do gerenciador de configuração.
- O servidor de integração contínua detecta o commit, faz um Checkout lança as operações de compilação e de testes
- Em caso de falha uma notificação é gerada para o gerente de projeto e/ou para a equipe de desenvolvimento.
- O desenvolvedor envolvido pelo erro é faz uma atualização do repositório de gerenciamento de configuração e corrige a anomalia.
Características gerais de um servidor de integração contínua
Um servidor de integração contínua deve permitir, principalmente:
- De realizar operações de Checkout do gerenciador de configuração.
- A compilação do código-fonte
- A criação do arquivo de aplicação (Ear, Jar, War, ...)
- A implantação do arquivo na máquina de teste.
- A execução de um conjunto de testes: Junit, Cactus, Auditoria do código-fonte, teste de IHC, testes funcionais
- A notificação do resultado: e-mail, RSS.
- A criação do relatório de estatísticas.
- A integração com outras ferramentas
Os servidores da integração mais conhecidos
- Cruise Control : open source e gratuito, muito conhecido, bem documentado, testa as aplicações J2EE e as aplicações em .Net. É a referência da integração contínua.
- Hudson : open source e gratuito, tornou-se bastante popular, mais recente que o Cruise Control, testa aplicações J2EE. Utilizado pela SUN
- Continuum : open source e gratuito, suportado pela fundação Apache
- Bamboo : open source e pago