Notícias

Automatizando Builds com GXserver e CruiseControl.NET :: By José Lamas

Uma das vantagens de utilizar um repositório de controle de alterações – como é GeneXus Server para o desenvolvimento com GeneXus – é a possibilidade de automatizar o processo de montagem de um projeto a partir das alterações que os desenvolvedores vão fazendo. José Lamas compartilha um guia para colocá-lo em prática.

Para quê automatizar a montagem do projeto

Ter um processo automático é um dos componentes básicos de uma Integração Contínua, uma prática em desenvolvimento de software que consiste em integrar frequentemente (várias vezes por dia) o trabalho dos diferentes desenvolvedores com o objetivo de detectar o mais cedo possível os problemas de integração. Os ambientes de trabalho dos diferentes desenvolvedores integram-se por meio dos commits que eles fazem para um repositório central e a integração é verificada por um processo automático de montagem do projeto, que também pode incluir outros testes.
 
Contudo, seja no contexto de Integração Contínua ou de integrações menos frequentes, o simples fato de automatizar a montagem a partir do que está no repositório já apresenta vantagens.
 
A montagem de um sistema costuma ser um processo complexo que envolve múltiplas etapas, desde obter as últimas alterações do repositório, gerar e compilar tudo o que for necessário, executar reorganizações, até mover os programas para o ambiente de execução.
 
Se a isso acrescentarmos os detalhes da montagem de inúmeras versões do projeto (que tomam coisas de diferentes lugares, precisam de componentes de diferentes versões, que deixam os resultados em outro lugar etc), e diferentes variantes da montagem (com ou sem testes, montando ou não certos módulos, produzindo ou não setup etc), a complexidade pode crescer significativamente.

Automatizar esse processo implica, entre outras coisas:
  • Não ter que destinar uma pessoa para executar cada etapa, verificar os resultados, decidir o passo seguinte a ser executado etc.
  • Não depender do conhecimento de uma pessoa para executar esses passos corretamente e na ordem adequada. O que acontece quando essa pessoa adoece ou sai de férias?
  • Não correr o risco que essa pessoa se engane, o que é frequente nos momentos de maior stress, justamente quando pode produzir mais prejuízo.
Além da possibilidade de executar todo o processo de montagem de forma completamente autônoma e com apenas um comando, automatizar o processo nos permite dar o próximo grande passo, automatizar também o próprio disparo do processo. Por exemplo, alguém poderia querer que a cada intervalo de tempo se verificasse se houve novos commits no repositório, e que, em caso afirmativo, se executasse automaticamente a montagem do projeto. Algumas pessoas poderiam querer que isso acontecesse várias vezes por dia; outras, durante algumas noites ou só nos fins de semana. Aqui é onde entram em cena os chamados servidores de integração contínua, dos quais CruiseControl.NET  é um exemplo.

Combinando GeneXus Server e CruiseControl.NET

Um servidor de integração contínua é um serviço que se encarrega de monitorar certo repositório de software para ver se foram feitas alterações, em casos em que se pode disparar um processo de montagem do projeto.
Em nosso caso, o que vamos utilizar como servidor de integração contínua é CruiseControl.NET. Esse software vai monitorar – com a frequência que indicarmos – bases de conhecimento administradas por um GeneXus Server, e se tiverem sido produzidos novos commits, se encarregará de atualizar uma cópia da KB e executar o processo de montagem. Tanto a atualização como a montagem serão executadas através de tarefas MSBuild, de forma que não seja preciso suspender GeneXus para isso.


Convidamos você a continuar lendo na Community Wiki o passo a passo para realizar a configuração desse processo de automatização com GXserver.