Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jenkins Evolutions - JEEConf 2012

Jenkins Evolutions - JEEConf 2012

Anton Arhipov

May 31, 2012
Tweet

More Decks by Anton Arhipov

Other Decks in Programming

Transcript

  1. Jenkins  Evolu-ons   Anton  Arhipov   ZeroTurnaround   JRebel  

    @antonarhipov   h/p://arhipov.blogspot.com    
  2. Agenda   !  Background   !  Stories   •  Func-onal

     tests   •  Servlet  tests   •  Scaling     !  Random  stuff  
  3. Background  -­‐  2008   !  First  installa-on   !  Clicked

     “Run”  when  wanted  to  test   stuff  
  4. Background     2012   ! 54  215  324  jobs

      ! 2  5  8  dedicated  machines   !  Amazon  ~7000  instance-­‐hour  per  month   !  3  in  house  plugin  developed   !  Custom  dashboard  (50  x  300  grid)  
  5. h6ps://github.com/                  

                                     jenkinsci/                                                              jenkins-­‐scripts  
  6. JRebel  Func-onal  JDK  Tests   !  Per  JDK   • 

    Per  func-onal  test   •  Compile  couple  of  classes   •  Run  some  methods  and  assert   •  Recompile  couple  of  classes   •  Run  some  methods  and  assert   •  …  
  7. JRebel  Func-onal  JDK  Tests   !  Per  JDK   • 

    Per  func-onal  test   •  Compile  couple  of  classes   •  Run  some  methods  and  assert   •  Recompile  couple  of  classes   •  Run  some  methods  and  assert   •  …  
  8. JRebel  Func-onal  JDK  Tests   !  Per  JDK   • 

    Per  func-onal  test   •  Compile  couple  of  classes   •  Run  some  methods  and  assert   •  Recompile  couple  of  classes   •  Run  some  methods  and  assert   •  …  
  9. JRebel  Func-onal  JDK  Tests   !  Per  JDK   • 

    Per  func-onal  test   •  Compile  couple  of  classes   •  Run  some  methods  and  assert   •  Recompile  couple  of  classes   •  Run  some  methods  and  assert   •  …  
  10. JRebel  Func-onal  JDK  Tests   !  Per  JDK  …  

    !  Which  Jenkins  feature  is  the   best  here?    
  11. JRebel  Func-onal  JDK  Tests     !  How  to  get

     results?  Jenkins   feature…  
  12. JRebel  Func-onal  JDK  Tests   !  Creates  ~  10  000

     new  files   !  Compile  ~  1700  java  classes   !  Invoke  the  JVM  ~  550  -mes  
  13. JRebel  Func-onal  JDK  Tests   !  Bare  metal   !

     Cloud   !  Bare  metal  (+  cloud)  
  14. JRebel  Func-onal  JDK  Tests   !  Cloud   •  1

     small  instance  per  JDK   •  Manual  update  of  AMIs   •  Slow   •  Scales!  
  15. JRebel  Func-onal  JDK  Tests   !  Bare  metal   • 

    8  core  &  16GB  RAM  gaming   machines   •  Recycled  developer  machines   •  Marke-ng  demo  machines  (iMac)   •  Developer  machines,  ad-­‐hoc  (?)  
  16. Jenkins   Master   Windows   Windows   Windows  

    *nix   *nix   *nix   *nix   *nix  
  17. Jenkins   Master   Windows   Windows   Windows  

    *nix   *nix   *nix   *nix   *nix  
  18. Jenkins   Master   Windows   Windows   Windows  

    *nix   *nix   *nix   *nix   *nix   My   Laptop   iMac  
  19. Adding  new  machines     !  How  to  manage  the

      configura-ons?   !  How  to  automate  the  setup?  
  20. Servlet  Tests   !  Start  a  container  version   • 

    WebSphere,  Weblogic,  JBoss,  etc   !  Deploy  applica-ons     !  Test  results,  reload  changes,  test   results,  …  
  21. Servlet  Tests     !  Problem:  1  app  server,  2

     jobs.   Which  plugin  to  use?  
  22. Servlet  Tests   !  Start  Tomcat   !  Copy  WAR

     files  to  webapps/   !  GET  /some-­‐url   !  Assert   !  Update  applica-on   !  GET  /some-­‐url   !  Assert  
  23. Tes-ng  Mul-ple  Containers   !  Cloud   •  1  small

     instance  per  container   •  Need  to  update  AMIs   •  Slow   •  Isola-on  
  24. Tes-ng  Mul-ple  Containers   !  Single  machine   •  Port

     hell   •  Memory  limits   •  Fast(er)!    
  25. Story  of  DVCS   !  Problem   •  Many  servers

      •  Many  containers   •  Many  tests   •  Many  JDKs   !  Slow  feedback  cycle  
  26. Story  of  DVCS   DEV   N  tests  on  N

     servers    (30  minutes)   STABLE   M  tests  on  M  servers    (3  hours)   Tests  green?   Push  to  branch/repository  
  27. Story  of  Scaling   !  Problem   •  Exponen-al  growths

     of  tests   •  (containers) X (configurations) X (tests) + const! •  Fight  for  executors  
  28. Story  of  Scaling   !  Add  more  machines?   !

     Spin  up  more  cloud  instances?   !  A/ach  developer  machines  at   night?   !  Cut  tests  scope?  
  29. Some  Cool  Plugins   !  Mercurial  plugin   !  Thro/le

     Concurrent  Builds  plugin   !  Matrix  Configura-on  plugin   !  Matrix  Reloaded  plugin   !  SSH  slaves  plugin   !  Publish  over  SSH  plugin   !  Copy  Ar-fact  plugin   !  Copy  to  slave  plugin  
  30. Some  Cool  Plugins:     Con-nuous  Deployment   !  

    Build  Pipeline  plugin   ! Parametrized  Trigger  plugin   !   Downstream  Buildview  plugin   !   Fingerprints   h6p://zeroturnaround.com/blog/how-­‐to-­‐use-­‐jenkins-­‐for-­‐job-­‐chaining-­‐and-­‐visualizaQons/