Quando falamos de integração contínua, temos que entender que essa prática tem como fundamento o modelo de equipe de desenvolvimento software onde os desenvolvedores fazem "updates" diários em suas estações de trabalho logo ao iniciarem suas atividades, e gerentes de projetos e líderes técnicos, verificarem os logs dos builds do dia anterior. Caso se demore para fazer "updates" ou ninguêm se importe com builds quebrados, integração contínua não faz se faz presente em sua melhor característica: "Capturar rapidamente bugs e também corrigí-los rapidamente".
Temos que entender também, que a partir do uso desse modelo de desenvolvimento ágil com updates diários, surgiu a necessidade de ferramentas de automatização desses builds. Assim surgiram os servidores de integração contínua. Exemplos como Apache Continuum, Bamboo, Hudson, TeamCity, CruiseControl, Selenium, CCTray,CCMenu, Xvfb, e outros.
Outra característica importante a ser explicitada é que servidores de integração contínua estão desacoplados de estratégias de build. Existem várias API's de build no mercado como Maven, Ant, MS-builder e outras.
Cada builder tem um grupo de estratégias de versionamento, componentização, testes mais apropriadas a determinadas necessidades de projetos. Hoje, tenho trabalhado com os builders Maven, Ant, e Ms-build; e cada projeto tem sua estratégia de versionamento.
Os build's diários que basicamente fazem compilação, testes e montagens; estão nos ajudando também a executar de forma automatizada atividades como atualização de ambientes (desenvolvimento, suporte e testes), geração de mídias de instalação, atualização de update sites entre outras.
Outro pilar importante em todo esse processo de integração contínua, são as ferramentas de controle de fontes. Saber utilizar ferramentas fontes é essencial pois suas estratégias básicas devem representar os planos de produto.
