Integração Contínua - Configurando seu projeto

Olá a todos!!!! Aqui está mais um artigo da saga. Neste artigo estarei explicando as principais configurações para implementar a Integração Contínua no seu projeto. Primeiramente, <a href="http://www.lagix.com.br/2011/04/integracao-continua-cruisecontrolnet.html">após ter instalado o servidor CruiseContro.NET</a>, vamos abrir o arquivo ccnet.config que está na pasta server do CCNet.

Este arquivo apresenta a seguinte estrutura:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> </cruisecontrol>

Entre estas tags é que iremos configurar nosso projeto. Então vamos começar a criar o projeto, abaixo está um exemplo de como ficará a configuração após a criação do projeto:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
      <project name="Nome do Projeto"></project>
</cruisecontrol>

Agora o projeto está criado, porém não irá funcionar. Temos que configurar o repositório do Subversion e o intervalo que o servidor verificará o Subversion a existência de novas versões. A configuração firacá parecida com abaixo:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
      <project name="Nome do Projeto"></project>
            <weburl>http://IP/ProjetoNoSubversion</weburl>
            <triggers> 
                  <intervaltrigger> 
                      <buildcondition>IfModificationExists</buildcondition> 
                      <seconds>10</seconds> 
                      <name>IntervalTrigger</name> 
                  </intervaltrigger>
          </triggers>
</cruisecontrol>

webURL - URL de onde está o projeto Subversion;
triggers - Tag para a configuração do intervalo de execução da integração;
intervalTrigger - Tag que define que a integração será executada em intervalos de um determinado período. Existem outras possibilidades de que podem ser conferidas aqui;
buildCondition
- Condição para o início da execução da integração, neste caso a integração somente será executada quando existir uma modificação no código;
seconds - Configura o tempo do intervalo, neste caso a integração verificará a cada 10 segundos a existência de um código alterado/novo para poder inicializar a execução da integração.

Agora já sabemos onde está o código fonte do nosso projeto, agora temos que definir uma pasta que será baixados os fontes para o servidor de integração contínua executar o processo de build, testes e etc.; para isso vamos acrescentar mais uma tag na configuração, como é vista abaixo:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
      <project name="Nome do Projeto"></project>
            <weburl>http://IP/ProjetoNoSubversion</weburl>
            <triggers> 
                  <intervaltrigger> 
                      <buildcondition>IfModificationExists</buildcondition> 
                      <seconds>10</seconds> 
                      <name>IntervalTrigger</name> 
                  </intervaltrigger>
          </triggers>
          <workingdirectory>C:\MeuProjeto</workingdirectory>
</cruisecontrol>

 Agora, estamos quase prontos, mas primeiro temos que configurar o build (que será explicado mais adiante) e os relatórios. Veja a configuração abaixo, as tags destacadas serão explicadas mais a frente, nelas iremos chamar o build do projeto. Agora iremos publicar os relatórios no CruiseControl.NET, veja a configuração abaixo:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
      <project name="Nome do Projeto"></project>
            <weburl>http://IP/ProjetoNoSubversion</weburl>
            <triggers> 
                  <intervaltrigger> 
                      <buildcondition>IfModificationExists</buildcondition> 
                      <seconds>10</seconds> 
                      <name>IntervalTrigger</name> 
                  </intervaltrigger>
          </triggers>
          <workingdirectory>C:\MeuProjeto</workingdirectory>
          <b><task></task></b>
<b>          </b>
          <publishers></publishers>
                 <statistics>    
                 <xmllogger>
                 <modificationhistory>
                 <modificationwriter>    </modificationwriter></modificationhistory></xmllogger></statistics>
          </cruisecontrol>

<b>xmllogger</b> - Exibe o log da execução do processo de integração;
<b>modificationHistory</b> - Exibe o histórico de modifações do código;
<b>modificationWriter</b> - Exibe o usuário, do Subversion,  que fez a alteração;

Caso você queira inserir um arquivo, XML, externo para compor o relatório insira as seguintes tags, como se pode ver abaixo:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
      <project name="Nome do Projeto"></project>
            <weburl>http://IP/ProjetoNoSubversion</weburl>
            <triggers> 
                  <intervaltrigger> 
                      <buildcondition>IfModificationExists</buildcondition> 
                      <seconds>10</seconds> 
                      <name>IntervalTrigger</name> 
                  </intervaltrigger>
          </triggers>
          <workingdirectory>C:\MeuProjeto</workingdirectory>
          <task></task>
         
          <publishers></publishers>
                <merge>    
                      <files> 
                            <file>C:\Diretorio\relatorio.xml</file>
                      </files>   
              </merge>
                 <statistics>    
                 <xmllogger>
                 <modificationhistory>
                 <modificationwriter>   
</cruisecontrol>

IMPORTANTE: Uma coisa que tem ficar bem claro, a tag merge tem que ser a primeira dentro da publishers, caso contrário não será exibido o seu relatório.


Com isso terminamos (em partes, falta o build) a configuração do projeto. Até a próxima.