Successfully reported this slideshow.

Integracao Continua em projetos .NET

3,592 views

Published on

Palestra realizada no COMTEC 2008 em 31/05/2008.

  • Be the first to comment

Integracao Continua em projetos .NET

  1. 1. Integração Contínua em projetos .NET Luthiano Vasconcelos [email_address]
  2. 3. Realização
  3. 4. Patrocinadores
  4. 5. Apoio
  5. 6. Objetivos <ul><li>Apresentar os conceitos fundamentais relacionados as práticas de Integração Contínua. </li></ul><ul><li>Demonstrar como o CruiseControl.NET pode ser usado para implementar as práticas de Integração Contínua em projetos .NET. </li></ul>
  6. 7. Material de Referência Integrating Agile Development in the Real World Expert .NET Delivery Using NAnt and CruiseControl.NET
  7. 8. Agenda <ul><li>Integração contínua </li></ul><ul><ul><li>O que é? </li></ul></ul><ul><ul><li>Benefícios </li></ul></ul><ul><ul><li>Fatores de sucesso </li></ul></ul><ul><li>CruiseControl.NET </li></ul><ul><ul><li>O que é? </li></ul></ul><ul><ul><li>Como funciona? </li></ul></ul><ul><li>Dúvidas </li></ul>Agenda
  8. 9. O que é isso? http://www.worldslargestpuzzle.com
  9. 10. Desenvolver um software é como... ...montar um quebra-cabeças!
  10. 11. Se o projeto for muito grande... … trabalhar sozinho é um caminho possível… mas demorado!
  11. 12. Se o projeto for muito grande... … o trabalho em equipe é fundamental: reduz o estresse.
  12. 13. Se a equipe estiver integrada... … o trabalho pode até se tornar DIVERTIDO!
  13. 14. O problema é garantir a integração...
  14. 15. Como garantir que a junção das partes...
  15. 16. ... resultam no todo? Integrar só no final do projeto é muito, muito arricado!
  16. 17. Como garantir que não está faltando nada? Classe Web Services Configuração Script Componente Biblioteca Documentação Rotinas de Teste
  17. 18. Problemas no cotidiano das equipes <ul><li>Desenvolvedores e designers (com graus de conhecimentos diferentes) trabalhando no mesmo código-fonte. Qualquer um pode “quebrá-lo”! </li></ul><ul><li>Um cenário típico: </li></ul>A complexidade do build é diretamente proporcional ao tamanho do projeto!
  18. 19. O que é Integração Contínua? Compila código-fonte Prepara banco de dados Executa testes Realiza inspeções Notifica os interessados
  19. 20. Benefícios <ul><li>Elimina as longas sessões de integração. </li></ul><ul><li>O problemas de integração são detectados tão breve quanto possível (reduz o risco). </li></ul><ul><li>Melhora o trabalho em equipe: as pessoas criam um forte sentimento de interdependência. </li></ul><ul><li>Fornece frequentemente informações importantes para o acompanhamento da qualidade do produto. </li></ul>Qualidade Produtividade
  20. 21. Fatores de sucesso <ul><li>Repositório unificado de código-fonte </li></ul><ul><li>Builds automatizados </li></ul><ul><li>Testes automatizados </li></ul><ul><li>Disciplina dos desenvolvedores </li></ul><ul><ul><li>Sincronizar freqüentemente </li></ul></ul><ul><ul><li>Não quebrar o build, ele é sagrado </li></ul></ul><ul><ul><li>Se você quebrou, conserte! </li></ul></ul>
  21. 22. O que é CruiseControl.NET? <ul><li>É um gerenciador de builds de código-aberto e gratuito </li></ul><ul><li>Consiste de dois componentes: </li></ul><ul><ul><li>Build loop (executa como um serviço) </li></ul></ul><ul><ul><li>Status Dashboard (aplicação web) </li></ul></ul><ul><li>Integra-se a vários sistemas de gerenciamento de configuração (VSS, CVS, PVCS, Subversion, ClearCase, ...) </li></ul><ul><li>Funciona com qualquer ferramenta de build que produza um resultado tratável (NAnt, MSBuild, FinalBuilder, ...) </li></ul>
  22. 23. O que é CruiseControl.NET? <ul><li>Pode ser usado em projetos C#, VB.NET, etc… </li></ul><ul><li>Facilmente extensível: </li></ul><ul><ul><li>Arquitetura baseada em plugins </li></ul></ul><ul><ul><li>Interfaces bem definidas com sistemas de controle de código-fonte e ferramentas de build </li></ul></ul><ul><li>Bem documentado: </li></ul><ul><ul><li>Material de referência abrangente </li></ul></ul><ul><ul><li>Lista de discussão bastante ativa </li></ul></ul><ul><ul><li>Muitos tutoriais </li></ul></ul><ul><ul><li>Vários livros </li></ul></ul>
  23. 24. Diagrama de Arquitetura
  24. 26. CruiseControl
  25. 27. Como funciona? <ul><li>Desenvolvedor publica seu trabalho no controle de código-fonte (VSS, CVS, SVN, etc…) </li></ul><ul><li>CruiseControl.NET verifica periodicamente e controle de código-fonte </li></ul><ul><li>Se CruiseControl.NET detecta alguma mudança: </li></ul><ul><ul><li>Dispara um build </li></ul></ul><ul><ul><li>Captura logs e artefatos do build </li></ul></ul><ul><ul><ul><li>Exemplos: dll, msi, relatórios de testes unitários (NUnit), de cobertura de código e métricas de qualidade </li></ul></ul></ul><ul><ul><li>Publica os resultados </li></ul></ul><ul><ul><ul><li>Exemplos: envia e-mail, acende uma luz! </li></ul></ul></ul>
  26. 28. Integração contínua para quem tem recur$o$
  27. 29. Integração contínua para quem tem recur$o$
  28. 30. Integração contínua para quem tem recur$o$
  29. 31. Integração contínua para quem tem recur$o$ http://www.hamang.net/index.php?option=com_content&task=view&id=16&Itemid=9
  30. 32. O que você ganha?
  31. 33. O que você precisa? <ul><li>Servidor de Builds </li></ul><ul><li>Servidor de Controle de Código (VSS, CVS, SVN, etc…) </li></ul><ul><li>Processo bem definido </li></ul><ul><li>Ferramentas (CruiseControl.NET, NAnt, NAntContrib, etc...) </li></ul><ul><li>Responsabilidades do desenvolvedor </li></ul><ul><ul><li>Atualizar o repositório frequentemente. </li></ul></ul><ul><ul><li>O código deve ser compilável </li></ul></ul><ul><ul><li>O código deve ter testes unitários </li></ul></ul>Quebrar o build é feio! Muito feio!
  32. 34. Resumo <ul><li>Builds Noturnos (ou Diários) é um boa prática, mas Integração Contínua é melhor! </li></ul><ul><li>Integração Contínua não elimina os bugs , porém torna a tarefa de localizá-los mais fácil e rápida. </li></ul><ul><li>CruiseControl viabiliza a Integração Contínua, porém a disciplina da equipe de desenvolvimento é a chave . </li></ul><ul><li>Automatização reduz custos, melhora a visibilidade e deixa menos espaço para erros humanos . </li></ul>
  33. 35. Dúvidas?
  34. 36. Links <ul><li>Conceitos de Integração Contínua: </li></ul><ul><ul><li>http://unibrain.com.br/recursos/artigos/integracao-continua/ </li></ul></ul><ul><li>CruiseControl.NET: </li></ul><ul><ul><li>http://ccnet.thoughtworks.com/ </li></ul></ul><ul><li>Plugin para Firefox: </li></ul><ul><ul><li>http://www.md.pp.ru/mozilla/cc/ </li></ul></ul><ul><li>Esses modestos slides: </li></ul><ul><ul><li>http://www.luthiano.com </li></ul></ul>

×