domingo, 6 de outubro de 2013

Integração Continua

Enfim, depois de um longo período de expectativas e frustrações, consegui finalmente integrar o CruiseControl.Net ao GxServer, claro que não fiz isso sozinho, tive a ajuda de nada mais nada menos do que o mestre José Lamas da Artech.  Qual foi o resultado final disso? espetacular! Parece até um sonho, ver o CCNet ler o GxServer e em caso de alterações na Kb iniciar um processo MSBuild para criar uma aplicação de forma automatizada, ou seja, sem a necessidade de nenhuma pessoa.
No desenvolvimento de software de forma compartilhada, ou seja, com muitos desenvolvedores, o que temos  é um processo constante de entrega de objetos e a necessidade de uma validação imediata se o mesmo pode ou não ser integrado ao que chamamos repositório central.  Isso ocorre porque todos os desenvolvedores possuem projetos locais que podem sofrer pequenas variações em termos de configurações, versões de objetos, banco de dados diferentes em relação à produção, enfim muitos fatores que podem levar a um problema. Isso ocorre porque nem todos os desenvolvedores baixam as atualizações em seu projeto com o repositório central de forma constante, por razões que vão desde preguiça, falta de interesse, tempo, ou mesmo coisas mais complexas como erros de objetos publicados por outros, que produzem atrasos, enfim é um processo meio caótico.

Integrar continuamente significa que ao ser publicado alguma coisa no repositório central, algum mecanismo deve validar se essa operação não afetou a construção do sistema como um todo, e qual a melhor forma de fazer isso? Recriando o sistema novamente, gerando não apenas o objeto que subiu, mas suas referências, e é exatamente isso que o servidor de integração faz.

O cenário que conseguimos resolver em nosso modelo envolve o GeneXus + GxServer + CruiseControl (CCNet) + .NetFramework, 

De forma que ao entregar algum objeto ao GxServer, faz com que o CCNet entre em ação fazendo com que uma aplicação seja construída.

Ao desenvolvedor cabem duas ações posteriores à entrega:
  1. Ingressar no painel do CCNet para verificar se houve sucesso em sua ação
  2. Testar o sistema gerado para ver se a operação

Não dá pra encerrar sem citar o post do José Lamas a respeito do CruiseControl.Net, sobre o tema Integração Continua. Se você se interessa por esse assunto, vale a pena ver.

Gracias José!