Palestra Hudson Jugday 2009

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Palestra Hudson Jugday 2009 - Presentation Transcript

    1. Integração Contínua com Hudson Leandro de Morais Nunes [email_address] Tutorial apresentado no JUGDay 2009 – Porto Alegre/RS http://jugday.rsjug.org
    2. Tópicos
      • Introdução
      • Boas práticas da Integração Contínua (IC)
      • Ferramentas
      • Desenvolvimento do projeto prático
      • Considerações finais
    3. #whoami
      • Leandro Nunes
        • Coordenador RSJUG
        • Programador Java (SCJP 5)
        • Formado em Ciência da Computação (PUCRS)
        • Mestrando em Microeletrônica (UFRGS)
        • Blog
          • http://leandron.wordpress.com
    4. Introdução
    5. Introdução
      • A Integração Contínua compreende um conjunto de boas práticas para manter a equipe atualizada sobre o estado atual do projeto
      • Tenta assegurar que teremos sempre uma versão consolidada e compilável de nosso código, preferencialmente, em um repositório
    6. Introdução
      • Imagine um grupo de desenvolvedores...
    7. Introdução
      • Imagine também que todos eles estão realizando suas atividades em um repositório de código em comum
      Repositório CVS SVN Mercurial Git ... commits checkouts, updates
    8. Introdução
      • Essa situação lhe é familiar ??
      • Como assegurar que em um determinado momento o código do repositório...
        • É confiável ?
        • Compila ?
        • Está testado ?
    9. Boas práticas da Integração Contínua
    10. Boas práticas da IC
      • Mantenha um único repositório de código
        • Soluções caseiras devem ser evitadas (e.g. Drives de rede compartilhados)
        • Tudo que você precisa para ter um produto a partir de seu código deve estar no repositório!
    11. Boas práticas da IC
      • Automatize o build
        • A geração de um produto pode envolver além da compilação, movimentação de arquivos e BDs
        • É importante facilitar e tornar essas tarefas automatizadas e de fácil acesso aos interessados
        • Martin Fowler afirma: “se essas tarefas podem ser automatizadas... então devem ser automatizadas”
    12. Boas práticas da IC
      • Faça seu build ser auto-testável
        • Testes automáticos são legais e podem pegar muitos bugs
        • A execução de testes automatizados no processo de build é um passo fortemente recomendado para IC
        • Ferramenta *Unit são ideais para esse tipo de teste
    13. Boas práticas da IC
      • Cada um lança suas modificações, todos os dias
        • Desde que elas sejam compiláveis!
        • Objetiva reduzir o tempo entre o desenvolvimento e o teste
        • Reduz o número de pontos a serem revistos na ocorrência de uma falha de build
        • Martin Fowler diz: “O segredo para solucionar um problema de conflito rapidamente, é encontrá-lo rapidamente”
    14. Boas práticas da IC
      • Cada commit atualiza o repositório principal, no servidor de integração
        • Sempre que algo é enviado para o repositório, o servidor de integração dispara um processo de build
        • Faz chackout dos fontes atualizados do repositório
        • Efetua o processo de build
    15. Boas práticas da IC
      • Mantenha um build rápido
        • Um dos focos da IC é fornecer um feedback rápido
        • De que adianta realizar a integração a cada commit se o build levar 2h para terminar ?
        • Tempo máximo de build recomendado: 10 minutos
        • Build de 2 estágios
          • 1: Compila, executa testes simples e avisa o desenvolvedor do resultado
          • 2: Executa testes demorados e reporta os resultados
    16. Boas práticas da IC
      • Tenha uma cópia do ambiente de produção para testes
        • Executar os testes em um ambiente semelhante ao de produção é uma garantia a mais de fidelidade na execução dos testes
        • Esses ambientes podem ser caros!
        • Uma tendência é o uso de sistemas virtualizados para testes automatizados
    17. Boas práticas da IC
      • Facilite o acesso ao último executável
        • Para demonstrações
        • Para testes exploratórios
        • Esse executável deve ter passados nos testes unitários para ser considerado um produto válido
        • Defina um lugar comum, que todos possam acessar
        • Automatize a substituição do executável mais atual
    18. Boas práticas da IC
      • Todos podem ver o que está acontecendo
        • Integração contínua, acima de tudo, é um exercício de comunicação
        • Podem ser utilizado sistema visuais externos (luzes, displays, …)
        • Informação mais comum que é propagada entre os desenvolvedores:
          • Estado do build da versão principal
    19. Boas práticas da IC
      • Automatize a implantação do sistema
        • Consiste na criação de mecanismos automatizados para troca/atualização de versão
          • Em servidores de teste
          • Em produção
        • Reduz o impacto (custo e tempo) da troca de versão em ambientes de produção
        • Aproxima os usuários da equipe de desenvolvimento
        • Considere um rollback automático
    20. Ferramentas
    21. Ferramentas para IC
      • Automatização de ciclo de vida do projeto
        • Maven 2
          • Gerencia e automatiza projetos Java
          • Baseada em um modelo de convenção sobre configuração
          • Utiliza repositórios para download de ferramentas e plugins comuns
          • Easy-to-use
          • Facilita a tarefa de configuração de ferramentas pois sabe de antemão a localização de seus requisitos
    22. Ferramentas para IC
      • Análise estática de código
        • FindBugs
          • Ferramenta open source
          • Busca por padrões de código que sejam potenciais erros
          • Possui centenas de padrões conhecidos
          • Trabalha tanto com o byte code quanto com código-fonte
    23. Ferramentas para IC
      • Análise estática de código
        • PMD
          • Semelhante ao FindBugs, procura po padrões de código que potencialmente são falhas de codificação
          • Blocos vazios
          • Variáveis não usadas
          • Uso indevido de String em detrimento ao uso de StringBuffer
          • Códigos com alta Complexidade Ciclomática
    24. Ferramentas para IC
      • Análise estática de código
        • CPD
          • É outro software do pacote do PMD
          • Busca por código duplicado (é o acrônimo para Copy and Paste Detector )
          • Pode utilizar uma linguagem intermediária para que a simples troca de nomes de variáveis não o engane
          • Possui algumas alternativas pagas como o Simian (Similarity Analyser)
    25. Ferramentas para IC
      • Análise estática de código
        • Checkstyle
          • Verifica padrões de codificação diretamente no código fonte
          • Gera um relatório com todas as violações encontradas
    26. Ferramentas para IC
      • Métricas de projeto
        • JavaNCSS
          • Conta o número de classes, métodos, variáveis não comentadas
          • Contabiliza métodos com JavaDoc ( importantíssimo! )
          • Calcula a Complexidade Ciclomática dos métodos
    27. Ferramentas para IC
      • Métricas de projeto
        • StatSVN
          • Fornece um Raio-X de toda a evolução de commits em seu repositório
          • Oferece gráficos
          • Desenvolvedor do mês (???), é aquele cara que enviou maior número de linhas para o repositório
    28. Ferramentas para IC
      • Testes
        • JUnit Report
          • Apresenta um relatório com todos os testes executados
          • Tempo de execução
          • Resultado da execução dos testes
          • “ Keep the bar green to keep the code clean”
    29. Ferramentas para IC
      • Testes
        • Cobertura
          • Responde a pergunta: “Quanto % de meu código é coberto pelos meus testes unitários ?”
          • Ótimo indicador de qualidade
          • Utiliza o JavaNCSS
    30. Ferramentas para IC
      • Testes
        • Emma
          • É uma alternativa de ferramenta para cobertura de código fonte através de testes unitários
          • Detecta coberturas parciais de uma linha
          • O usuário pode informar um nível mínimo de cobertura para e será alertado quando esse nível não for atingido
          • Possibilita merge de relatórios de instrumentação
    31. Ferramentas para IC
      • Integração Contínua
        • São softwares que automatizam tarefas comuns para realização das disciplinas da Integração Contínua de forma mais amigável
        • Recursos básicos
          • Checkout de sistemas de versionamento (SVN, CVS, Git)
          • Execução de taks de ferramentas de automação de projetos (ANT, Maven)
          • Execução de ferramentas de teste, métricas, verificação estática
          • Ações pós-build (publicação de relatórios, envio de e-mail)
    32. Ferramentas para IC
      • Hudson
        • Sistema automatizado para suporte à integração contínua
        • Fácil instalação
        • Integrado às principais ferramentas de IC
        • Integrado aos principais sistemas de versionamento
        • Não utiliza banco de dados
        • Extensível
    33. Ferramentas de IC
    34. Tópicos
      • Introdução
      • Boas práticas da Integração Contínua (IC)
      • Ferramentas
      • Desenvolvimento do projeto prático
      • Considerações finais
    35. Parte 2 Desenvolvimento do Projeto Prático
    36. Projeto Prático
      • Objetivo
        • Criar uma aplicação Java e empregar técnicas de integração contínua.
      • Ingredientes
        • 01 SVN
        • 01 Hudson
        • 01 Maven
        • 01 NetBeans
        • Plugins à gosto
    37. Projeto Prático
      • Algumas considerações
        • A criação do repositório SVN em Windows e/ou Linux está no material de apoio
        • Links para downloads das ferramentas também
        • Não fique com dúvidas, pergunte!
    38. Projeto Prático
      • Fazendo o download de instalando o Hudson
        • Acesse o site oficial
          • http://hudson.dev.java.net/
        • Faça o download do hudson.war
        • Execute
        • #java -jar hudson.war
    39. Projeto Prático
      • Possível passo extra
        • Configurando proxy no Maven
        • Fonte
          • http://maven.apache.org/guides/mini/guide-proxies.html
    40. <settings> . <proxies> <proxy> <active> true </active> <protocol> http </protocol> <host> proxy.somewhere.com </host> <port> 8080 </port> <username> proxyuser </username> <password> somepassword </password> <nonProxyHosts> www.google.com </nonProxyHosts> </proxy> </proxies> . </settings> ~/.m2/settings.xml
    41. Projeto Prático
      • Criando nosso projeto maven com NetBeans
      • Configurando o repositório
      • Implementando algum código
      • Adicionando suporte à integração contínua
      • Instalando plugins
      • Publicando os resultados
      • Fazendo poll periódico no SVN
    42. Considerações Finais
    43. Considerações Finais
      • Adotar Integração Contínua pode trazer muitos benefícios à seu projeto
        • Consequentemente à sua equipe
      • Sua equipe estará constantemente atualizada sobre o estado do projeto
      • Não nos livra do surgimento de bugs mas reduz consideravelmente o tempo gasto para encontrá-los e corrigí-los
    44. Considerações Finais
      • Os processos de Integração Contínua são completamente independentes de linguagem
      • Implantar integração contínua em um projeto não ocorre da noite para o dia.
        • Consiste também em uma mudança cultural
        • Considere ir mudando gradativamente a forma como as coisas são feitas no seu projeto
    45. Onde buscar mais informações ?
      • Mailing lists usuários Hudson
        • [email_address]
      • Lista do RSJUG
        • Vamos discutir integração contínua!
        • [email_address]
    46. Links Interessantes
      • Artigo de Referência
        • http://martinfowler.com/articles/continuousIntegration.html
      • Material de Apoio desse tutorial
        • http://bit.ly/4rANk4
      • Hudson
        • http://hudson.dev.java.net/
      • Meu Blog
        • http://leandron.wordpress.com
    47. Integração Contínua com Hudson Obrigado! Leandro de Morais Nunes [email_address] Tutorial apresentado no JUGDay 2009 – Porto Alegre/RS http://jugday.rsjug.org

    + Leandro NunesLeandro Nunes, 1 month ago

    custom

    298 views, 0 favs, 1 embeds more stats

    Tutorial ministrado por Leandro de Morais Nunes, no more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 298
      • 228 on SlideShare
      • 70 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 16
    Most viewed embeds
    • 70 views on http://leandron.wordpress.com

    more

    All embeds
    • 70 views on http://leandron.wordpress.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?