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

Integracao Continua em projetos .NET

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

Notas do Editor

  • #2 Videos http://www.youtube.com/watch?v=2U9qPP4OC_M http://www.youtube.com/watch?v=tk8BXhA0BCA