de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente podendo haver multiplas integracoes por dia. Cada integracao e verificada por um build automatizado (incluindo testes) para detectar erros de integracao o mais rapido possivel. Muitos times acham que essa abordagem leva a uma significante reducao nos problemas de integracao e permite que um time desenvolva software coeso mais rapidamente. Martin FowlerPara a utilizacao continua, e importante que a equipe possa trabalhar em grupo, para isso e importante que se tenha um sistema de controle centralizado de versao.Controle de versao e Integracao continuaComo parte crucial no processo de desenvolvimento e, para o sucesso da integracao continua, o controle de versao deve ser utilizado. Sendo que um dos objetivos do controle de versao e o trabalho colaborativo, em que diversos desenvolvedores trabalham em conjunto e compartilhando dados. O controle de versao e essencial para metodologias como o XP, em que a equipe deve trabalhar em conjunto constantemente.O sistema de controle de versao resolve um grande problema quando trabalhamos em equipe: como compartilhar as informacoes de forma a ter a ultima versao valida e ainda saber quem fez as alteracoes; como prevenir que os desenvolvedores refacam o trabalho ja desenvolvido, etc.Para solucionar estes problemas, existe um conjunto de ferramentas para controle de versao centralizado, entre elas temos o CVS, Subversion, Git, entre outros. Estas ferramentas permitem aos desenvolvedores trabalharem em conjunto, possuindo um Servidor central responsavel pelo versionamento do sistema e possibilitando que varios clientes possam acessar, visualizar, modificar e enviar novos codigos se for necessario.CVS: http://www.tortoisecvs.org/ http://cvs.nongnu.org/Subversion: http://subversion.tigris.org/ http://subversion.apache.org/Git: http://git-scm.com/ https://github.com/ http://gitref.org/Entre os beneficios da utilizacao de um sistema de controle de versao, temos: possibilidade de restaurar versoes anteriores do sistema; comparar codigos; gestao de alteracao, etc.E possivel utilizar o sistema de controle de versao para gerenciar codigos, documentos, scripts de teste entre outros. Alem disso, e possivel criar uma linha alternativa para o desenvolvimento, o chamado branches.O controle de versao funcionara de forma basica da seguinte forma: O desenvolvedor faz o seu codigo, efetua um build antes de integrar seu codigo com a base principal; Apos realizar o build, o sistema deve ser integrado a base do sistema de controle de versao atraves de sincronizacao;Este processo deve ser feito frequentemente, evitando-se assim o acumulo de codificacao para a integracao ao repositorio. Algumas metodologias ditam que o desenvolvedor so pode considerar como pronto o trabalho quando o trabalho estiver sincronizado e entao o desenvolvedor realizar um build na maquina de integracao e apos todos os testes serem executados com sucesso.Na integracao continua o processo de build integrado deve ser feito constantemente, sendo sincronizado sempre que possivel, evitando o acumulo de codigos e de testes. Isto por que e mais facil encontrar erros em pequenas integracoes do que em uma integracao grande.O problema e que, apesar de ser agil, temos que criar testes automatizados que permitam ao desenvolvedor analisar erros de integracao. Uma boa pratica e a utilizacao de frameworks XUnits para esta tarefa, exemplo: Junit para Java, PHPUnit para PHP, CppUnit para C++, entre