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.

Integração Contínua - CruiseControl.NET

Neste artigo estarei falando sobre o elemento principal da Integração Contínua que é o Servidor de Integração Contínua. Seguindo o nosso exemplo, estarei utilizando o CruiseControl.NET que é uma versão do CruiseControl para DotNet.

1 - Pré-Instalação


Antes de instalar o servidor é necessário que antes tenha instalado os seguintes programas: Microsoft Framework .NET 3.5 e IIS.



2 - Instalação

O processo de instalação do CruiseControl.NET é simples. Primeiramente teremos que realizar o download da última versão (no caso 1.6) no site http://confluence.public.thoughtworks.org/. Após o download execute o instalador, utilizando o protocolo NNF (Next, Next, Finish) você conseguirá instalar o CruiseControl.NET. Só fanzendo uma observação, atente para as opções "Install CC.Net server as Windows service" e "Create virtual directory in IIS for Web Dashboard", estas opções devem estar marcadas e, com isso o servidor será executado como um serviço do Windows e será criado automaticamente um diretório virtual no IIS.

3 - Instalação do CCTray

O CCTray é um aplicativo que vem junto ao servidor, ele é uma versão client do CruiseControl.NET, com ele cada envolvido na equipe de desenvolvimento é avisado quando a integração falha. Existem outras formas de fazer este aviso, porém o CCTray é a maneira mais ágil.

Após a instalação do servidor, você pode acessa-lo e, localizado na parte superior-direita encontra-se o link para o download do CCTray. A instalação dele é bem simples, mais a frente estarei explicando como realizar a configuração.

4 - Criando um projeto

Na pasta onde foi instalado o CruiseControl.NET existe um diretório chamado server, dentro dele vamos abrir o arquivo ccnet.xml.config, nele é onde será feito toda a configuração do projeto.

Toda a configuração é feita neste arquivo XML, então para criarmos um novo projeto é só inserir a seguinte tag:




5 - Adicionando um projeto no CCTray

Agora com o projeto criado, podemos adicioná-lo ao CCTray, para isso vá File\Settings. Na aba Build Project, clique no botão Add e, em seguida em Add Server. Na tela a seguir coloca-se o caminho do endereço do servidor e em seguida Ok. Em Available Projects selecione o projeto desejado e clique em Ok. Pronto o CCTray já está configurado com o projeto.


Por enquanto é isso. No próximo artigo explicarei como criar as configurações para o projeto.

O sonho não acabou

Dias corridos são... E por isso a nova versão beta está demorando para sair. Na próxima versão o Amigo Oculto estará mais estável, estou refarotando o mesmo. Em breve publicarei mais informações sobre a nova versão beta do Amigo Oculto.

O objetivo é lançar até o final deste ano na loja oficial (Android Market) a versão final do Amigo Oculto.

Até mais. ;D

Problemas com som no Ubuntu

Eu instalei no meu computador a versão beta do Ubuntu 10.10 e, de vez em quando ocorre um problema de o mesmo não emitir nenhum som.

Após pesquisar bastante descobri o comando abaixo:

# alsa force-reload

Ele força a reinicialização do sistema de som e, assim volta a funcionar perfeitamente.

Converterndo 3GP para MP3

Hoje tive um problema. Precisava converter audios em 3GP, gravados no celular para o MP3, para editá-los no Audacity. No Ubuntu com o comando abaixo não funcionava:

ffmpeg -i audio.3gp -acodec mp3 -ab 128k pt01.mp3

Então ditiei o seguinte comando para descobrir o codec do mp3 e verifiquei que no Ubuntu o mesmo tinha outro nome:

ffmpeg -codecs | grep mp3
EA    libmp3lame      libmp3lame MP3 (MPEG audio layer 3)


ffmpeg -i audio.3gp -acodec libmp3lame -ab 128k pt01.mp3


Assim consegui realizar a conversão ;D

Microsoft lança o revolucionario Windows 95

De volta ao passado!!! (Re)Veja o vídeo da reportagem do Jornal Nacional sobre o lançamento do revolucionario Windows 95.



Integração Contínua - Preparando Ambiente

Agora que já sabemos o que é Integração Contínua, vamos preparar o ambiente para o processo.

Precisaremos dos seguintes itens:

  1. Servidor com Windows Server (de preferência dedicado à Integração Contínua e publicação do software para Homologação);
  2. Framework Microsoft .NET 3.5;
  3. Servidor de Integração Contínua para .NET (Cruise Control .NET);
  4. Ferramenta para Teste Unitário em .NET (NUnit);
  5. Ferramenta para Teste de Aceitação (Selenium);
  6. Navegador Web Firefox;
  7. Ferramenta para Teste de Cobertura (NCover);
  8. Ferramenta para Teste de Duplicação de Código (Dupfinder);
  9. Ferramenta para Análise de Código (FXCop);
  10. Servidor IIS;
  11. Servidor de Controle de Versões (Subversion);
  12. Ferramenta para geração de documentação do código (NDoc);
  13. Ferramenta para realizar o Build do projeto (NAnt);
  14. Ferramenta para gerenciamento do projeto (TargetProcess).
Esta é a parte crucial e, consequentemente, a parte mais demorada.  Então vamos fazer o download dos itens acima e instalá-los (a instalação destes, individualmente, não tem mistério). Com exceção do item 11, pois o mesmo poderá ser um servidor separado que já esteja configurado.

No próximo artigo estarei abordando as configurações e, instalações, de cada um dos itens acima.

Integração Contínua - Conceito

Olá a Todos! Estarei começando uma série de artigos sobre Integração Contínua. Nesta primeira parte abordarei sobre o conceito e vantagens deste processo. Existem no mercado diversas ferramentas, para diversas linguagens, porém nestes artigos estarei me atentando somente ao processo de Integração Contínua com a plataforma Microsoft .NET.

Integração Contínua é um processo que se integra as práticas de desenvolvimento ágil e, visa manter a qualidade no desenvolvimento de software diminuindo assim as falhas, pois o mesmo realiza automaticamente diversos testes e builds automatizados  do projeto e caso algo estiver errado ou fora dos padrões pré-estabelecidos (padrões de qualidade) os envolvidos são avisados automaticamente.

O processo de Integração Contínua funciona da seguinte forma, como é mostrado na figura abaixo:
Conforme o Desenvolvedor realiza um commit (envia as alterações do código fonte para o servidor de Controle de Versão) o servidor de Integração Contínua detecta estas alterações e realiza o processo de compilação, testes e, publicação do software para ser homologado.

Vantagens:

  • Quando um Teste Unitário falha o programador consegue corrigir sem perda de tempo com debug para descobrir onde está o erro;
  • Aviso rápido quando ocorre uma quebra de código;
  • Aviso rápido quando ocorre um conflito de versões;
  • Disponibilidade constante para realização de testes e demonstrações;
  • Relatório de métricas gerados a partir dos teste automatizados;

Desvantagens:

  • Requer um longo período para realizar a configuração de todo o processo;


Por hoje terminamos aqui. Nos proximos artigos estarei explicando sobre as ferramentas necessárias para montar um servidor de Integração Contínua.

Até lá ;D