User:Pedrodelyra/Integração Contínua

A integração contínua é uma prática de desenvolvimento de software em que os trabalhos feitos por diferentes desenvolvedores são integrados com frequência. Organizações que fazem uso de uma abordagem linear para desenvolver software geralmente possuem uma fase dedicada à integração dos componentes do sistema que forem construídos separadamente. O problema é que nessa fase de integração, a equipe deve fundir códigos que foram escritos há muito tempo e a quantidade de conflitos e defeitos gerados é imensa. A integração contínua possui uma proposta simples (e um nome sugestivo) que procura amenizar os riscos presentes à integração de software: integre seu trabalho frequentemente. Apesar de sua simplicidade, os benefícios trazidos por esta prática podem ser enormes, pois quaisquer conflitos de código são identificados o mais cedo possível e isso reduz o esforço despendido pela equipe para integrar seus códigos.

Geralmente, a integração contínua é utilizada em projetos submetidos à controle de versão. Múltiplos desenvolvedores compartilham uma linha de desenvolvimento do projeto, realizam suas modificações no código, e integram (com frequência) suas versões do projeto à esta linha de desenvolvimento. A sequência de atividades realizadas pelo programador é muito simples: obtenha a versão mais atual da linha de desenvolvimento compartilhada pelos desenvolvedores da sua equipe, faça suas modificações (corrija um bug, adicione funcionalidades, etc...), paralelamente à isso, atualize periodicamente a versão do projeto que você possui na sua máquina, para que ela se mantenha sincronizada à versão compartilhada pelos desenvolvedores, resolva quaisquer conflitos que surgirem durante essas atualizações, após o término da sua tarefa no código, atualize novamente a versão que você possui do sistema, resolva possíveis conflitos e, finalmente, integre seu código à linha de desenvolvimento do repositório remoto. Uma prática que complementa a integração contínua (e essencial) é garantir que a versão do sistema com as suas modificações passe em todos os testes da aplicação e gere uma build válida antes de integrá-la à uma linha de desenvolvimento no repositório remoto.

Integração Contínua Automatizada Existem ferramentas que foram desenvolvidas para automatizar o processo de integração de software. Elas são utilizadas em conjunto às atividades descritas anteriormente e executam uma série de scripts que verificam se a versão integrada do software é válida. Estas ferramentas mantêm os desenvolvedores informados do estado das versões do projeto e notificam quaisquer erros que eventualmente surgiram durante a integração. Ao longo desta wiki, a ferramenta Jenkins será apresentada ao leitor para mostrar, na prática, como automatizar a integração contínua no seu projeto.

Política de Branches