Integração contínua
A integração contínua (CI) envolve a produção de uma versão limpa do sistema várias vezes ao dia.
Conteúdo
A integração contínua (CI) envolve a geração de uma versão limpa do sistema várias vezes ao dia, geralmente com uma ferramenta como o CruiseControl, que utiliza o Ant e diversos sistemas de controle de versão. Equipes Agile normalmente configuram a CI para incluir compilação automatizada, execução de testes unitários e integração com o controle de versão. Às vezes, a CI também inclui a execução automática de testes de aceitação automatizados, como os desenvolvidos com o FitNesse. Na prática, a CI significa que a versão gerada é quase sempre limpa.
Técnica, ferramentas e política de integração contínua
Existem diversas práticas específicas que a Inteligência Artificial parece exigir para funcionar bem. Em seu siteMartin Fowler oferece uma descrição longa e detalhada do que é integração contínua e como fazê-la funcionar.
Uma regra popular de CI (Integração Contínua) afirma que os programadores nunca devem deixar nada sem integrar ao final do dia. A compilação nunca deve passar a noite em um estado inconsistente. Isso impõe uma certa disciplina de planejamento de tarefas às equipes de programação. Além disso, se a regra da equipe é que quem quebrar a compilação no momento do check-in terá que corrigi-la, há um incentivo natural para fazer check-ins de código com frequência durante o dia.
Benefícios da integração contínua
Quando a integração contínua (CI) funciona bem, ela ajuda a manter o código robusto o suficiente para que clientes e outras partes interessadas possam interagir com ele sempre que quiserem. Isso acelera o fluxo de trabalho de desenvolvimento como um todo; como Fowler destaca, a experiência é bem diferente. Também incentiva mais feedback entre programadores e clientes, o que ajuda a equipe a acertar os detalhes antes dos prazos de cada iteração. Assim como a refatoração, a integração contínua funciona bem se você tiver um conjunto abrangente de testes unitários automatizados que garantam que você não esteja enviando código com erros.
Uma integração contínua eficiente significa que a integração nunca é um problema, porque seu trabalho reflete apenas pequenas divergências em relação à base de código. Mesmo que a equipe precise lidar regularmente com divergências de pequena escala, ela nunca terá que lidar com as realmente assustadoras. Além disso, a equipe tem a oportunidade de discutir diferentes abordagens de design no mesmo dia em que elas surgem, pois a integração realizada naquele dia as torna públicas para todos.