Após longos meses, aqui vai mais um post sobre Integração Contínua, uma prática que tem o potencial para revolucionar a qualidade e produtividade do desenvolvimento de software.
O CruiseControl.Net é um sistema de Integração Contínua. Um sistema destes tem uma função extremamente simples: monitoriza, com períodos tão curtos quanto possível (ao nível dos minutos), projectos guardados num Sistema de Controlo de Versões e quando detecta alterações despoleta o processo de build. Naturalmente que o processo é totalmente automático e os programadores apenas têm de trabalhar como sempre trabalharam: check-out, programar, check-in. Todos vocês usam controlo de versões, não usam?? Este processo tem diversas vantagens, mas a principal é mesmo o feedback extremamente rápido das alterações introduzidas no projecto. Se conjugarmos este ponto com um mecanismo de build robusto e completo, temos um processo extremamente útil.
O CruiseControl.Net realiza a função atrás descrita, oferecendo ainda diversas funcionalidades interessantes:
- Diversas formas de acompanhamento do processo: através de mail, site ou uma aplicação que se aloja no systray.
- Integração com diversas aplicações, como o NUnit, o FxCop, o NCover, NAnt e Devenv (Visual Studio.Net), sendo relativamente fácil integrar novas aplicações.
- Labeling automático de projectos.
Nos últimos dias tive tempo para montar o CruiseControl.Net aqui no emprego e montar o processo do princípio ao fim. Neste momento tenho dois projectos dummies a ser monitorizados. Um deles é um projecto C# constituído por uma BD, uma assembly e um site. O processo de build realiza os seguintes passos:
- Limpa o ambiente (apaga BD's, site e directoria de build).
- Retira a última versão do projecto do SourceSafe (código e script sql).
- Cria a BD.
- Compila a solução.
- Cria o site.
- Testa a solução, via NUnit.
- Faz análise de code coverage, via NCover.
- Faz análise de código, via FxCop.
- Gera documentação, via NDoc.
O outro projecto é bastante mais simples, tem apenas a curiosidade de compilar componente VB6, o que significa que também é possível montar um esquema destes para aplicações COM.
A aplicação de build é o NAnt, que é bastante fácil de utilizar, tendo apenas o senão de o script de build, que é em XML, se poder tornar muito complexo.
Montar todo o processo não foi muito complicado. Vale mesmo a pena apostar num esquema destes.