Integração contínua

A integração contínua (CI) envolve a produção de uma compilação limpa do sistema várias vezes ao dia.

A integração contínua (CI) envolve a produção de uma compilação limpa do sistema várias vezes ao dia, geralmente com uma ferramenta como CruiseControl, que usa Ant e vários sistemas de controle de origem. As equipes Agile normalmente configuram o CI para incluir compilação automatizada, execução de teste de unidade e integração de controle de origem. Às vezes, a CI também inclui a execução automática de testes de aceitação automatizados, como os desenvolvidos com o FitNesse. Com efeito, CI significa que a compilação é quase sempre limpa.

Técnica, ferramentas e política de integração contínua

Existem várias práticas específicas que o IC parece exigir para funcionar bem. No site dele, Martin Fowler fornece uma descrição longa e detalhada do que é integração contínua e como fazê-la funcionar.

Uma regra popular de CI afirma que os programadores nunca deixam nada desintegrado no final do dia. A compilação nunca deve passar a noite em um estado quebrado. Isso impõe alguma disciplina de planejamento de tarefas nas equipes de programação. Além disso, se a regra da equipe é que quem quebra a compilação no check-in deve consertá-la novamente, há um incentivo natural para verificar o código com frequência durante o dia.

Benefícios da integração contínua

Quando o CI funciona bem, ele ajuda o código a permanecer robusto o suficiente para que os clientes e outras partes interessadas possam brincar com o código sempre que quiserem. Isso acelera o fluxo do trabalho de desenvolvimento em geral; como Fowler aponta, tem uma sensação muito diferente. Também incentiva mais feedback entre programadores e clientes, o que ajuda a equipe a acertar as coisas antes dos prazos de iteração. Assim como a refatoração, a integração contínua funciona bem se você tiver um conjunto exaustivo de testes de unidade automatizados que garantem que você não cometa código com erros.

CI hábil significa que a integração nunca é uma dor de cabeça, porque seu trabalho reflete apenas uma ligeira divergência da base de código. Se a equipe precisa lidar regularmente com divergências de pequena escala, nunca terá que lidar com divergências realmente assustadoras. Eles também têm a oportunidade de discutir diferentes abordagens de design no dia em que surgem, porque a integração desse dia os chama a atenção de toda a equipe.