palestra hudson jugday 2009
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.comTRANSCRIPT
- 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