Ferramentas de Integração Contínua tornando o Trabalho de Equipes mais Organizado - Engenharia de Software 7

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Nesse artigo, apresentamos inicialmente uma visão geral de sistemas de build e de controle de versão. Em seguida, são apresentadas as principais características de três ferramentas de integração contínua: Cruise Control, Continuum e Hudson.

Esse artigo faz parte da revista Engenharia de Software 7 edição especial. Clique aqui para ler todos os artigos desta edição

Projeto

Ferramentas de Integração Contínua tornando o Trabalho de Equipes mais Organizado

Conhecendo os Bastidores

 

Diversas razões definem a presença de grandes grupos de desenvolvedores em uma mesma equipe para a criação de sistemas, tais como, tamanho, prazo de entrega solicitado pelo cliente, etc. Assim, a necessidade de desenvolvedores trabalharem em conjunto de forma organizada está presente em nosso dia a dia. Pensando nisso, como um projeto pode ter uma equipe organizada enquanto que um mesmo código fonte é compartilhado? Existem ferramentas que auxiliem nesse processo? Caso existam, quais seriam?

Para responder todas essas perguntas, podemos citar o conceito de integração contínua, bastante utilizado por processos ágeis, tais como Extreme Programming. A idéia principal consiste em integrar o trabalho realizado por várias pessoas durante diversos momentos do dia, e realizar testes que permitam assegurar que o código continue consistente ao final de cada integração.

A forma ideal para aplicar integração contínua é através do uso de diversas ferramentas, tais como, controle de versões (ex: CVS, Subversion e Clear Case), sistemas de build (ex: Ant, NAnt e Maven), além de notificações para usuários a partir de execuções realizadas (ex: email, MSN e SMS). Execuções, como, por exemplo, builds de projetos, são chamados de Jobs em diversos pontos no artigo.

Na Figura 1 ilustramos uma arquitetura que representa a idéia de integração contínua. Observe que nesse exemplo temos uma equipe com três desenvolvedores realizando mudanças em um mesmo arquivo ou em um conjunto de arquivos que constituem um projeto, compartilhado por um repositório localizado em outra máquina. No exemplo, consideramos que uma ferramenta própria para integração contínua instalada em outra estação é utilizada. A partir dela, poderíamos definir uma hora do dia para executar o build da última versão do projeto em desenvolvimento. Além disso, dependendo da ferramenta utilizada, podemos definir que uma notificação por e-mail deve ser enviada para toda a equipe de desenvolvimento informando se a execução foi realizada com sucesso ou se falhou.

 

Figura 1.  Arquitetura para representar integração Contínua.

 

Nesse artigo, apresentamos inicialmente uma visão geral de sistemas de build e de controle de versão. Em seguida, são apresentadas as principais características de três ferramentas de integração contínua: Cruise Control, Continuum e Hudson, e ao final do artigo é realizada uma comparação entre elas. A partir dessa comparação, será possível identificar quais suas principais vantagens e desvantagens.

Sistemas para Build

Sistemas de build são usados para agilizar e automatizar execuções de projetos, através da automatização de tarefas, como: compilação do código do sistema; compilação e execução dos testes unitários e de aceitação; geração de relatórios dos testes, de cobertura e de análise estática do código; e quaisquer outras atividades necessárias. Exemplos de ferramentas de build usadas hoje em dia são: Ant, Maven 1, Maven 2, NAnt, entre outras.

Sistemas para controle de versão

Um sistema de controle de versão é usado para armazenar e manter versões de arquivos, assim como, todo o código fonte de um sistema. Também conhecido por repositório, é responsável por automatizar tarefas como: identificação de mudanças locais; exibição das diferenças entre o código de um arquivo local e uma de suas versões armazenadas no repositório; identificação de quem realizou uma determinada alteração; incorporação de uma mudança em um arquivo local a uma versão do mesmo arquivo armazenada no repositório; sincronizar o código local com uma das versões do sistema ou de um arquivo armazenadas no repositório. Ferramentas muito usadas para desenvolvimento são as seguintes: Subversion, CVS, Clear Case.

Para realizar a integração contínua, é importante utilizar um sistema de controle de versões. Caso não haja um sistema desse tipo, torna-se difícil permitir que equipes com diversos desenvolvedores trabalhem juntos e compartilhem o código fonte de um mesmo projeto.

Imagine dois desenvolvedores alterando um mesmo arquivo. Duas grandes preocupações estariam presentes: a primeira refere-se a garantir que cada desenvolvedor esteja ciente que o mesmo arquivo está sendo alterado por outras pessoas, enquanto que a segunda seria entender quais mudanças foram feitas por cada desenvolvedor para que uma versão integrada possa ser gerada. A partir de sistemas que realizam controle de versão, tais preocupações podem ser mais facilmente gerenciadas.

Cruise Control

 

Instalação

Pré-requisito: Considerando a linguagem Java, instale o JDK 5.x ou superior.

Acesse o link http://cruisecontrol.sourceforge.net/download.html, e a seguir escolha a versão que deseja. Atualmente, dois formatos de instalação são oferecidos: “.exe” e “.zip”.

 

Essa é uma das aplicações mais famosas para integração contínua, mantida e desenvolvida por voluntários dispostos a melhorar e disponibilizar novas funcionalidades. A aplicação permite que builds sejam executados a partir de diferentes ferramentas, a integração com diferentes controles de versão, além de realizar notificações de diferentes formas, quando, por exemplo, alguma falha acontece durante a execução de um job.

Cruise Control é dividido em três partes principais: (i) configuração do build dos projetos em um arquivo xml chamado “config.xml”, (ii) geração de relatórios que descrevem o que aconteceu na execução de builds, (iii) além de permitir o acompanhamento do status dos builds de diferentes projetos a partir de uma página web (dashboard).

Quando algum desenvolvedor deseja executar o build de um projeto, o primeiro passo é configurar a sua execução no arquivo config.xml. Diversos tipos de tags são oferecidos para que seja possível definir qual sistema de build será usado (Ant, Maven, Maven2, NAnt ou Phing) e qual controle de versão (AccuRev, AlienBrain, ClearCase, CVS, Perforce, PVCS, StarTeam, Subversion ou Visual Source Safe). Além disso, a ferramenta permite que caso o projeto tenha sofrido mudanças no repositório, a última versão seja utilizada para a execução do seu build. Caso aconteçam falhas durante um build, o Cruise Control permite que seja definido se sua execução deve continuar ou se deve ser cancelada.

 Outras funcionalidades interessantes que podem ser definidas é a possibilidade de excluir arquivos gerados em execuções anteriores de um build (exemplo: arquivos de log), assim como especificar qual será o diretório que os novos artefatos a serem gerados serão armazenados em futuras execuções. Podem ser guardados tanto localmente, como também em diretórios remotos (ex: FTP). Uma funcionalidade diferenciada é a possibilidade de realizar um merge de um log gerado pelo próprio Cruise Control com os resultados obtidos de um build que realiza testes unitários com JUnit utilizando o sistema Ant. A utilidade desse merge é a oportunidade de analisar de forma unificada como foi a execução dos builds e em que pontos foram realizados tais testes.

 O exemplo a seguir apresenta parte de um arquivo config.xml responsável por definir um projeto chamado “project1” que terá seu build executado por um ant (<ant>). Nesse exemplo são definidos três pontos: (i) o arquivo de log gerado pelo Cruise Control faz um merge com os testes feitos em junit (<log>), (ii) toda vez que o arquivo mof_file.txt for modificado o cvs é acessado (<modificationset>), (iii) e as notificações das execuções serão realizadas via e-mail. Toda vez que for executado um "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?