palestra hudson jugday 2009

Download Palestra Hudson Jugday 2009

If you can't read please download the document

Upload: leandro-nunes

Post on 06-Jun-2015

4.240 views

Category:

Documents


1 download

DESCRIPTION

Tutorial ministrado por Leandro de Morais Nunes, no JUGDay 2009, promovido pelo RSJUG. Evento realizados em 24/10/2009 em Porto Alegre/RS.http://leandron.wordpress.com

TRANSCRIPT

  • 1. Integrao Contnua comHudson Leandro de Morais Nunes [email_address] Tutorial apresentado no JUGDay 2009 Porto Alegre/RS http://jugday.rsjug.org

2. Tpicos

  • Introduo

3. Boas prticas da Integrao Contnua (IC) 4. Ferramentas 5. Desenvolvimento do projeto prtico 6. Consideraes finais 7. #whoami

  • Leandro Nunes
  • Coordenador RSJUG

8. Programador Java (SCJP 5) 9. Formado em Cincia da Computao (PUCRS) 10. Mestrando em Microeletrnica (UFRGS) 11. Blog

  • http://leandron.wordpress.com

12. Introduo 13. Introduo

  • A Integrao Contnua compreende um conjunto deboas prticaspara manter a equipe atualizada sobre o estado atual do projeto

14. Tenta assegurar que teremos sempre uma verso consolidada e compilvel de nosso cdigo, preferencialmente, em umrepositrio 15. Introduo

  • Imagine um grupo de desenvolvedores...

16. Introduo

  • Imagine tambm que todos eles esto realizando suas atividades em um repositrio de cdigo em comum

Repositrio CVS SVN Mercurial Git ... commits checkouts, updates 17. Introduo

  • Essa situao lhe familiar ??

18. Como assegurar que em um determinado momento o cdigo do repositrio...

  • confivel ?

19. Compila ? 20. Est testado ? 21. Boas prticas da Integrao Contnua 22. Boas prticas da IC

  • Mantenha um nico repositrio de cdigo
  • Solues caseiras devem ser evitadas (e.g. Drives de rede compartilhados)

23. Tudo que voc precisa para ter um produto a partir de seu cdigo deve estar no repositrio! 24. Boas prticas da IC

  • Automatize o build
  • A gerao de um produto pode envolver alm da compilao, movimentao de arquivos e BDs

25. importante facilitar e tornar essas tarefas automatizadas e de fcil acesso aos interessados 26. Martin Fowler afirma:se essas tarefaspodemser automatizadas... entodevemser automatizadas 27. Boas prticas da IC

  • Faa seu build serauto-testvel
  • Testes automticos so legais e podem pegar muitos bugs

28. A execuo de testes automatizados no processo de build um passo fortemente recomendado para IC 29. Ferramenta *Unit so ideais para esse tipo de teste 30. Boas prticas da IC

  • Cada um lana suas modificaes,todos os dias
  • Desde que elas sejam compilveis!

31. Objetiva reduzir o tempo entre o desenvolvimento e o teste 32. Reduz o nmero de pontos a serem revistos na ocorrncia de uma falha de build 33. Martin Fowler diz:O segredo parasolucionarum problema de conflito rapidamente, encontr-lorapidamente 34. Boas prticas da IC

  • Cada commit atualiza o repositrio principal, no servidor de integrao
  • Sempre que algo enviado para o repositrio, o servidor de integrao dispara um processo de build

35. Faz chackout dos fontes atualizados do repositrio 36. Efetua o processo de build 37. Boas prticas da IC

  • Mantenha um build rpido
  • Um dos focos da IC fornecer um feedback rpido

38. De que adianta realizar a integrao a cada commit se o build levar 2h para terminar ? 39. Tempomximode build recomendado:10 minutos 40. Build de 2 estgios

  • 1: Compila, executa testes simples e avisa o desenvolvedor do resultado

41. 2: Executa testes demorados e reporta os resultados 42. Boas prticas da IC

  • Tenha uma cpia do ambiente de produo para testes
  • Executar os testes em um ambiente semelhante ao de produo uma garantia a mais de fidelidade na execuo dos testes

43. Esses ambientes podem ser caros! 44. Uma tendncia o uso de sistemas virtualizados para testes automatizados 45. Boas prticas da IC

  • Facilite o acesso ao ltimo executvel
  • Para demonstraes

46. Para testes exploratrios 47. Esse executvel deve ter passados nos testes unitrios para ser considerado um produto vlido 48. Defina um lugar comum, que todos possam acessar 49. Automatize a substituio do executvel mais atual 50. Boas prticas da IC

  • Todos podem ver o que est acontecendo
  • Integrao contnua, acima de tudo, umexerccio de comunicao

51. Podem ser utilizado sistema visuais externos (luzes, displays, ) 52. Informao mais comum que propagada entre os desenvolvedores:

  • Estado do build da verso principal

53. Boas prticas da IC

  • Automatize a implantao do sistema
  • Consiste na criao de mecanismos automatizados para troca/atualizao de verso
  • Em servidores de teste

54. Em produo Reduz o impacto (custo e tempo) da troca de verso em ambientes de produo 55. Aproxima os usurios da equipe de desenvolvimento 56. Considere um rollback automtico 57. Ferramentas 58. Ferramentas para IC

  • Automatizao de ciclo de vida do projeto
  • Maven 2
  • Gerencia e automatiza projetos Java

59. Baseada em um modelo de conveno sobre configurao 60. Utiliza repositrios para download de ferramentas e plugins comuns 61. Easy-to-use 62. Facilita a tarefa de configurao de ferramentas pois sabe de antemo a localizao de seus requisitos 63. Ferramentas para IC

  • Anlise esttica de cdigo
  • FindBugs
  • Ferramenta open source

64. Busca por padres de cdigo que sejam potenciais erros 65. Possui centenas de padres conhecidos 66. Trabalha tanto com o byte code quanto com cdigo-fonte 67. Ferramentas para IC

  • Anlise esttica de cdigo
  • PMD
  • Semelhante ao FindBugs, procura po padres de cdigo que potencialmente so falhas de codificao

68. Blocos vazios 69. Variveis no usadas 70. Uso indevido de String em detrimento ao uso de StringBuffer 71. Cdigos com alta Complexidade Ciclomtica 72. Ferramentas para IC

  • Anlise esttica de cdigo
  • CPD
  • outro software do pacote do PMD

73. Busca por cdigo duplicado ( o acrnimo para Copy and Paste Detector ) 74. Pode utilizar uma linguagem intermediria para que a simples troca de nomes de variveis no o engane 75. Possui algumas alternativas pagas como o Simian (Similarity Analyser) 76. Ferramentas para IC

  • Anlise esttica de cdigo
  • Checkstyle
  • Verifica padres de codificao diretamente no cdigo fonte

77. Gera um relatrio com todas as violaes encontradas 78. Ferramentas para IC

  • Mtricas de projeto
  • JavaNCSS
  • Conta o nmero de classes, mtodos, variveisno comentadas

79. Contabiliza mtodos com JavaDoc ( importantssimo! ) 80. Calcula a Complexidade Ciclomtica dos mtodos 81. Ferramentas para IC

  • Mtricas de projeto
  • StatSVN
  • Fornece um Raio-X de toda a evoluo de commits em seu repositrio

82. Oferece grficos 83. Desenvolvedor do ms (???), aquele cara que enviou maior nmero de linhas para o repositrio 84. Ferramentas para IC

  • Testes
  • JUnit Report
  • Apresenta um relatrio com todos os testes executados

85. Tempo de execuo 86. Resultado da execuo dos testes 87. Keep the bar green to keep the code clean 88. Ferramentas para IC

  • Testes
  • Cobertura
  • Responde a pergunta: Quanto % de meu cdigo coberto pelos meus testes unitrios ?

89. timo indicador de qualidade 90. Utiliza o JavaNCSS 91. Ferramentas para IC

  • Testes
  • Emma
  • uma alternativa de ferramenta para cobertura de cdigo fonte atravs de testes unitrios

92. Detecta coberturas parciais de uma linha 93. O usurio pode informar um nvel mnimo de cobertura para e ser alertado quando esse nvel no for atingido 94. Possibilita merge de relatrios de instrumentao 95. Ferramentas para IC

  • Integrao Contnua
  • So softwares que automatizam tarefas comuns para realizao das disciplinas da Integrao Contnua de forma mais amigvel

96. Recursos bsicos

  • Checkout de sistemas de versionamento (SVN, CVS, Git)

97. Execuo de taks de ferramentas de automao de projetos (ANT, Maven) 98. Execuo de ferramentas de teste, mtricas, verificao esttica 99. Aes ps-build (publicao de relatrios, envio de e-mail) 100. Ferramentas para IC

  • Hudson
  • Sistema automatizado para suporte integrao contnua

101. Fcil instalao 102. Integrado s principais ferramentas de IC 103. Integrado aos principais sistemas de versionamento 104. No utiliza banco de dados 105. Extensvel 106. Ferramentas de IC 107. Tpicos

  • Introduo

108. Boas prticas da Integrao Contnua (IC) 109. Ferramentas 110. Desenvolvimento do projeto prtico 111. Consideraes finais 112. Parte 2 Desenvolvimento do Projeto Prtico 113. Projeto Prtico

  • Objetivo
  • Criar uma aplicao Java e empregar tcnicas de integrao contnua.

Ingredientes

  • 01 SVN

114. 01 Hudson 115. 01 Maven 116. 01 NetBeans 117. Plugins gosto 118. Projeto Prtico

  • Algumas consideraes
  • A criao do repositrio SVN em Windows e/ou Linux est no material de apoio

119. Links para downloads das ferramentas tambm 120. No fique com dvidas, pergunte! 121. Projeto Prtico

  • Fazendo o download de instalando o Hudson
  • Acesse o site oficial
  • http://hudson.dev.java.net/

Faa o download do hudson.war 122. Execute 123. #java -jar hudson.war 124. Projeto Prtico

  • Possvel passo extra
  • Configurando proxy no Maven

125. Fonte

  • http://maven.apache.org/guides/mini/guide-proxies.html

126. . true http proxy.somewhere.com 8080 proxyuser somepassword www.google.com . ~/.m2/settings.xml 127. Projeto Prtico

  • Criando nosso projeto maven com NetBeans

128. Configurando o repositrio 129. Implementando algum cdigo 130. Adicionando suporte integrao contnua 131. Instalando plugins 132. Publicando os resultados 133. Fazendo poll peridico no SVN 134. Consideraes Finais 135. Consideraes Finais

  • Adotar Integrao Contnua pode trazer muitos benefcios seu projeto
  • Consequentemente sua equipe

Sua equipe estar constantemente atualizada sobre o estado do projeto 136. No nos livra do surgimento de bugs mas reduz consideravelmente o tempo gasto para encontr-los e corrig-los 137. Consideraes Finais

  • Os processos de Integrao Contnua so completamente independentes de linguagem

138. Implantar integrao contnua em um projeto no ocorre da noite para o dia.

  • Consiste tambm em uma mudana cultural

139. Considere ir mudandogradativamentea forma como as coisas so feitas no seu projeto 140. Onde buscar mais informaes ?

  • Mailing lists usurios Hudson
  • [email_address]

Lista do RSJUG

  • Vamos discutir integrao contnua!

141. [email_address] 142. Links Interessantes

  • Artigo de Referncia
  • 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

143. Integrao Contnua com Hudson Obrigado! Leandro de Morais Nunes [email_address] Tutorial apresentado no JUGDay 2009 Porto Alegre/RS http://jugday.rsjug.org