pontoNETpt
A comunidade PontoNetPT está direccionada a todos os programadores que trabalhem com a plataforma .NET.
Integração Contínua - Introdução

Como disse no post anterior, do meu ponto de vista é possível fazer muito melhor na área do desenvolvimento. Existem muitos pontos dos quais vale a pena falar, mas existe um mais de fundo, um ambiente de desenvolvimento automatizado, que me parece particularmente entusiasmante. Este conceito - a Integração Contínua - foi popularizado pelas metodologias ágeis, como a Extreme Programming. Com a  plataforma .Net, e com a ajuda de um infraestrutura de suporte, ficam criadas finalmente as condições para que este conceito se torne realidade e acessível às pequenas e médias equipas que trabalhem com tecnologia Microsoft. É meu objectivo falar deste assunto ao longo de vários posts, onde aproveitarei para introduzir outras ideias que também terão direito ao seu espaço próprio.

Para concretizar o conceito, é fundamental o auxílio de uma série de aplicações que só com o advento do .Net surgiram no mundo Microsoft. Todas as aplicações que irei discutir são da Microsoft ou então são freeware, normalmente Open Source. O esquema apresentado em baixo é uma versão ainda algo rudimentar da arquitectura de um ambiente de desenvolvimento que adopta a Integração Contínua, tal como eu o imagino.

Ao longo dos próximos posts tentarei descrever o processo em detalhe, mas para já vou descrever resumidamente o fluxo.

  1. O desenvolvimento é feito em modo isolado pelos diversos elementos da equipa. Quando estes consideram que a solução se encontra estável, fazem check-in desta no SourceSafe. O Korby Parnell tem um blog onde fala da nova versão do SourceSafe.
  2. O CruiseControl.Net monitoriza o SourceSafe, de acordo com um período configurado por nós, para detectar novas versões da solução. Quando detecta uma nova versão, retira-a do SourceSafe e inicia o processo de build, permitindo detectar potenciais conflitos criados pelos novos desenvolvimentos e problemas não detectados localmente. Este passo é o cerne da Integração Contínua.
  3. Se o processo de build correu sem problemas, a nova versão é distribuída pelas diversas máquinas: para os servidores, de imediato; para as máquinas locais, conforme o definido. Se o processo detectou algum erro, o processo de deployment não é iniciado.
  4. O CruiseControl.Net publica os resultados num site que fornece diversas estatísticas sobre o processo, permitindo a toda a equipa estar permanentemente a par do estado e do progresso da solução.
  5. Os elementos directamente envolvidos no último build são notificados por e-mail, indicando os resultados obtidos.

Uma solução é considerada estável quando: compila sem erros; os testes de unidade, criados com o NUnit, passam todos; o código está conforme com as linhas de orientação definidas pela Microsoft e por nós na ferramenta FxCop; a percentagem do código exercitado é superior a um determinado valor, sendo verificado pelo CoverageEye.Net. Todos estes passos são configurados na ferramenta de build MSBuild.

Este post já vai longo, mas já devem ter percebido que há muitos temas para reflexão.

Até à próxima.


Posted 29-3-2004 10:09 por João Hugo Miranda

Comments

Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Oi amigo,
Sem dúvida um assunto importante e bastante interessante.
Vou ficar atento ao teu blog ;)

Nota: Sempre que poderes dá uma breve descrição das aplicações que mencionas
(NUnit,FxCop,CoverageEye.Net,MSBuild), talvez alguns não tenham conhecimento delas ;)
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Nos próximos posts vou descrever as diversas aplicações e como encaixam entre si. Eles já estão escritos num blog interno à minha empresa. Só tenho de os migrar e adaptar. ;)
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
O MSBuild ainda não está disponível. Qual a alternativa que sugeres até sair o Whidbey ?
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Neste momento, parece-me que será de apostar no NAnt, do qual tu falas num post recente. Tem uma comunidade que o apoia, tem um pai famoso (o Ant), integra com o CruiseControl.Net...

Talvez se possam considerar as SDC Build Tools, presentes em http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=2CB20E79-D706-4706-9EA0-26188257EE7D.

Destas só conheço a GUI para o MSBuild (que é engraçada, diga-se de passagem), mas sei que têm umas ferramentas pré-Whidbey.
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Parece-me um esquema muito interessante e que poderia ajudar muito no desenvolvimento de aplicações com equipas de pequena/média dimensão. No entanto, parece-me que a configuração de um sistema destes é relativamente demorada, ou não ?
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Muito bom post! Parabéns.
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Zé: Só referi ferramentas Open Source. Existem ferramentas comerciais, como o OpenMake, mas não estou interessado nessas devido ao custo. O site http://www.cmcrossroads.com é altamente recomendado.

Jorge: O meu interesse prende-se quase exclusivamente com processos/ferramentas que possam ser implementado(as) em equipas de pequena/média dimensão. Acredito que o investimento, que é curto ou nulo, compensa. Vai lendo os próximos posts.
Anonymous wrote re: Integração Contínua - Introdução
on 1-7-2009 1:07
Preciso saber quais as características da ferramenta (CruiseControl), quando se fala em integração.
Como é a integreção dela com a "NUnit", "Subversion", "IIS" e "NAnt"

Vocês podem me ajudar?

Grato.
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:46
Oi amigo,
Sem dúvida um assunto importante e bastante interessante.
Vou ficar atento ao teu blog ;)

Nota: Sempre que poderes dá uma breve descrição das aplicações que mencionas
(NUnit,FxCop,CoverageEye.Net,MSBuild), talvez alguns não tenham conhecimento delas ;)
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:46
Nos próximos posts vou descrever as diversas aplicações e como encaixam entre si. Eles já estão escritos num blog interno à minha empresa. Só tenho de os migrar e adaptar. ;)
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:46
O MSBuild ainda não está disponível. Qual a alternativa que sugeres até sair o Whidbey ?
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:46
Neste momento, parece-me que será de apostar no NAnt, do qual tu falas num post recente. Tem uma comunidade que o apoia, tem um pai famoso (o Ant), integra com o CruiseControl.Net...

Talvez se possam considerar as SDC Build Tools, presentes em http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=2CB20E79-D706-4706-9EA0-26188257EE7D.

Destas só conheço a GUI para o MSBuild (que é engraçada, diga-se de passagem), mas sei que têm umas ferramentas pré-Whidbey.
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:46
Parece-me um esquema muito interessante e que poderia ajudar muito no desenvolvimento de aplicações com equipas de pequena/média dimensão. No entanto, parece-me que a configuração de um sistema destes é relativamente demorada, ou não ?
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:47
Muito bom post! Parabéns.
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:47
Zé: Só referi ferramentas Open Source. Existem ferramentas comerciais, como o OpenMake, mas não estou interessado nessas devido ao custo. O site http://www.cmcrossroads.com é altamente recomendado.

Jorge: O meu interesse prende-se quase exclusivamente com processos/ferramentas que possam ser implementado(as) em equipas de pequena/média dimensão. Acredito que o investimento, que é curto ou nulo, compensa. Vai lendo os próximos posts.
Anonymous wrote re: Integração Contínua - Introdução
on 2-7-2009 1:47
Preciso saber quais as características da ferramenta (CruiseControl), quando se fala em integração.
Como é a integreção dela com a "NUnit", "Subversion", "IIS" e "NAnt"

Vocês podem me ajudar?

Grato.

Add a Comment

(requerido)  
(opcional)
(requerido)  
Remember Me?
If you can't read this number refresh your screen
Enter the numbers above:  
Powered by Community Server (Commercial Edition), by Telligent Systems