Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TDC 2010: Ambiente de Integração Contínua

356 views

Published on

Palestra sobre Sonar, Jenkins/Hudson e outras ferramentas de integração contínua.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

TDC 2010: Ambiente de Integração Contínua

  1. 1. Ambiente  de  integração  con1nua   Ferramentas  e  soluções  para   diminuir  a  complexidade  do   desenvolvimento     Helder  da  Rocha  (helder@argonavis.com.br)   TDC   2010  
  2. 2. Helder  da  Rocha   •  Java,  since  1995   •  Objec)ve-­‐C  &  iPhone  since  2008   •  HTML,  JavaScript,  Web   •  www.argonavis.com.br   •  www.helderdarocha.com.br  
  3. 3. ObjeSvos   •  Como  lidar  com  a  complexidade  crescente  do   processo  de  desenvolvimento   •  Que  ferramentas  e  soluções  existem  para   isso?  
  4. 4. Lei  da  preservação  da  complexidade   •  A  complexidade  não  desaparece!     •  Ela  se  muda  para  outro  lugar  e  se  esconde   – e  conSnua  a  crescer  por  lá  
  5. 5. Para  onde  foi  a  complexidade?   •  Com  orientação  a  objetos,  ferramentas,   frameworks,  etc.  programar  ficou  mais  simples   •  Mas  a  complexidade  aumentou  nos  processos  e   configuração  dos  ambientes   –  Manter  repositórios,  versões,  dependências   –  Configuração,  metadados,  mapeamentos,  ligações   –  Integração,  protocolos,  adaptadores,  filtros,   proteções   –  Processo,  build,  documentação,  testes  
  6. 6. Como  diminuir  a  complexidade?   •  Nos  processos:  mais  feedback   –  Metodologias  de  desenvolvimento  ágeis   –  Ferramentas  para  organizar  e  simplificar  o  processo   –  Ferramentas  para  coletar  e  organizar  informações   automaScamente:  métricas,  qualidade,  prazos,  etc.   •  Na  configuração:  menos  duplicação  de  esforços   –  Automa)zar  processos  como  build,  deploy,   versionamento,  etc.   –  Integrar  ambientes  e  ferramentas   –  Gerar  código  
  7. 7. Ferramentas   •  Build   –  Ant  /  Ivy  /  Maven   •  Qualidade  e  métricas   –  PMD  /  Checkstyle  /  Findbugs   –  Sonar   –  JUnit  /  Cobertura   •  Documentação   –  Javadoc  via  Ant  e  Maven,  Graphviz   •  Geração  de  código,  configuração   –  XSLT  /  XPath  
  8. 8. Maven  (maven.apache.org)   •  Gerencia  builds  e  repositórios  
  9. 9. Ant  +  Ivy  (ant.apache.org)   •  Gerencia  builds  (Ant)  e  repositórios   – AlternaSva  ao  Maven   – Podem  ser  integrados  a  um  ambiente  Maven  
  10. 10. Hudson  (hlps://hudson.dev.java.net/)   •  Integração  con1nua  +  Feedback  con1nuo  
  11. 11. Integração  con1nua   Repositório            CVS       cvs  commit   diff  cvs  checkout   Usuário   prog   prog   sendmail   logNNNN.xml   <xml>   <xml>   <xml>   <xml>     Pagina  Web   GET   Hudson   prog   1.  Usuário  envia          alteração   2.  CC  compara          sua  cópia  com          repositório   3.  Se  diferente          faz  checkout   4.  Monta  aplicação  e  roda  testes   5.  Se  sucesso,  incrementa  contador   6.  Gera  relatório,  envia  emails  
  12. 12. Hudson:  dashboard   Tempo  desde  úlSma  falha   Tempo  desde  úlSmo  sucesso   Estado  dos  builds   (quanto  a  violações,   testes,  sucesso,  etc.)   ÚlSmo  build  obteve  sucesso   ÚlSmo  build  falhou   Usuarios  CVS   que  fazem   commit  ou   montam  o   projeto  
  13. 13. PMD  +  Checkstyle  +  Findbugs   •  Ferramentas  de  análise  estáSca   •  Verificam  qualidade  do  código   •  Geralmente  são  incluídas  no  ambiente  de   desenvolvimento  (Eclipse,  Netbeans)   –  Mas  também  podem  ser  executadas  via  Ant,   Maven  e  incluídas  na  integração  con1nua   •  Sonar  e  Hudson  são  óSmos  para  apresentar   resultados  de  PMD,  Checkstyle  e  Findbugs   •  Onde  encontrar   –  hlp://pmd.sourceforge.net/   –  hlp://checkstyle.sourceforge.net   –  hlp://findbugs.sourceforge.net/  
  14. 14. Gráficos  de  tendências:  Hudson   Clique  no  gráfico  para   detalhamento  (descrição   do  problema  e  link  para   arquivo  e  a  linha  do   código  onde  foi   verificado)  
  15. 15. Relatórios  de  violações     e  falhas  de  testes   Detalhes  de  uma   violação  de  esSlo  
  16. 16. JUnit  e  Cobertura   •  Seu  código  deve  ter  testes  unitários   •  Cobertura  idenSfica  o  nível  de  cobertura   desses  testes  (métricas  via  Sonar)   •  Hudson  gera  gráfico  de  tendências  
  17. 17. Sonar  (www.sonarsource.org)   •  Instale  no  servidor  Web;  Gere  os  dados  via  plug-­‐in  do   Maven  (mesmo  em  projetos  Ant)   –  mvn  sonar:sonar  
  18. 18. Geração  de  javadoc   •  UML  Graph  +  Javadoc  (a  cada  build)   –  hlp://www.umlgraph.org   –  hlp://www.graphviz.org  
  19. 19. Graphviz  (www.graphviz.org)   •  Linguagem  declaraSva  para  gerar  gráficos   •  Exemplo  com  UML    Animal  [label  =  "{Animal|+  name  :  stringl+  age  :  intl|+  die()  :  voidl}”]            edge  [arrowhead  =  "empty”  ]    Dog  -­‐>  Animal    Cat  -­‐>  Animal  
  20. 20. Graphviz   •  Graphviz  faz  bem  mais  que  UML   –  Use  para  gerar  documentação  gráfica  complexa   –  Escreva  “dot  language”  (ou  gere  a  parSr  de  XML  com   XSLT/XPath)    
  21. 21. XSLT  e  XPath  (www.w3.org)   •  Pode  ser  usado  via  Java,  tarefa  do  Ant,  plug-­‐in  do   Maven  ou  linha  de  comando   •  Use  XSLT/XPath  para  extrair  dados  de  arquivos  de   configuração  XML  para     –  Gerar  outros  arquivos  (de  qualquer  Spo)   –  Gerar  PDF   –  Gerar  documentação  com  tabelas  HTML   –  Gerar  documentação  gráfica  com  Graphviz   XML   Template   XSLT   Processador  XSL   (Java,  Ant,   Maven)   Resultado  
  22. 22. Conclusão   •  Vale  a  pena  invesSr  em  tornar  seu  ambiente  de   desenvolvimento  mais  automaSzado   –  Menos  tempo  perdido  com  tarefas  burocrá)cas   –  Informações  atualizadas  e  precisas  sobre  o  estado   atual  do  desenvolvimento  e  qualidade  do  código   –  Subsídios  para  tomadas  de  decisões  em  ambientes   que  adotam  metodologias  ágeis   •  Há  várias  ferramentas  open-­‐source  que  podem   ajudar  nessa  tarefa,  como   –  Sonar,  Hudson,  Maven,  Ant+Ivy   –  XSLT/Framemarker,  Graphviz  

×