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.

Continuous delivery - tools and techniques

15,694 views

Published on

A talk I gave at the Montgomery County Java User's Group on Continuous Delivery Tools and Techniques.

Published in: Technology, Design

Continuous delivery - tools and techniques

  1. 1. Con$nuous  Delivery   Tools  and  Techniques   Mike  McGarr   mike.mcgarr@excella.com   h=p://earlyandoAen.wordpress.com     @jmichaelmcgarr  
  2. 2. About  Me  •  J.  Michael  (Mike)  McGarr  •  Excella  Consul$ng,  Arlington  VA  •  Lead  of  Excella’s  Java  Center  of  Excellence     2  
  3. 3. Excella  is  Hiring!   3  
  4. 4. Con$nuous  Delivery  is…  …a  set  of  prac$ces  and  principles  aimed  at,  building,  tes+ng,  and  releasing  soAware  faster  and  more  frequently.   4
  5. 5. 5
  6. 6. Goals  Quality   Cycle  Time   6
  7. 7. Con$nuous  what?  Continuous Continuous ContinuousIntegration Delivery Deployment 7
  8. 8. Con$nuous  Deployment   Build  Pipelines   Deployment  Automa$on  Configura$on   Con$nuous   Tes$ng  Management   Integra$on   Agile   8
  9. 9. Developers   http://flic.kr/p/5cK2 9  
  10. 10. Version  Control   10
  11. 11. Build  Automa$on   11
  12. 12. Unit  Tes$ng   12
  13. 13. JUnit,  Hamcrest  &  Mockito   13
  14. 14. 14
  15. 15. Spock   15
  16. 16. Test  Driven  Development  http://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx 16
  17. 17. Integra$on  Tes$ng   17
  18. 18. Sta$c  Code  Analysis   CheckStyle 18
  19. 19. The  Team   19  
  20. 20. Agile   20
  21. 21. Task  Management   21
  22. 22. Con$nuous  Integra$on  Check-­‐in  Daily  Commit  to  Trunk    Automate  the  Build  Keep  the  Build  Fast  Every  Commit  results  in  Build  Test  in  Clone  of  Produc$on  Automate  Deployment   22
  23. 23. Con$nuous  Integra$on   23
  24. 24. Jenkins   24
  25. 25. Dependency  Management   25
  26. 26. Nexus   26
  27. 27. Technical  Debt   27
  28. 28. Sonar   28
  29. 29. Specifica$on  by  Example   29
  30. 30. Spock  and  Geb   30
  31. 31. Concordion   31
  32. 32. Deployment   http://flic.kr/p/y8K 32
  33. 33. Build  Pipelines   33
  34. 34. Single  Iden$fier   34
  35. 35. Versioning   35
  36. 36. Code  Deployments   36
  37. 37. Database  Management   37
  38. 38. 38
  39. 39. Run$me  Configura$on  ESCAPE Database   39
  40. 40. Infrastructure  Management   40
  41. 41. Puppet   41
  42. 42. Vagrant   42
  43. 43. Op$mizing   http://flic.kr/p/6hDAEK 43  
  44. 44. Evolu$onary  Design   44
  45. 45. Performance  Tes$ng   45
  46. 46. Performance  Tes$ng   46
  47. 47. Monitoring   47
  48. 48. Con$nuous  Deployment   48
  49. 49. Contact  Me  Mike McGarrmike.mcgarr@excella.comhttp://earlyandoften.wordpress.com@jmichaelmcgarr 49
  50. 50. Further  Reading  •  Continuous Delivery: Reliable Software Releases through Build, Test and Deployment Automation, by Jez Humble and David Farley - http://www.amazon.com/Continuous-Delivery-Deployment-Automation- Addison-Wesley/dp/0321601912•  Test Driven Development (TDD) – http://en.wikipedia.org/wiki/Test-driven_development•  Introducing BDD, by Dan North – http://dannorth.net/introducing-bdd/•  Agile Manifesto – http://agilemanifesto.org/•  Scrum – http://www.scrumalliance.org/learn_about_scrum•  Continuous Integration, by Martin Fowler – http://martinfowler.com/articles/continuousIntegration.html•  Specification by Example, by Gojko Adzic - http://specificationbyexample.com/•  Build Pipelines - http://www.magpiebrain.com/2009/12/13/a-brief-and-incomplete- history-of-build-pipelines/ 50
  51. 51. Further  Reading  •  Maven Releases on Steriods, by Axel Fontaine – http://www.axelfontaine.com/2011/01/maven-releases-on-steroids- adios.html•  What is in a Name? Usually a version number, actually., by James Betteley - http://jamesbetteley.wordpress.com/2011/07/07/what-is-in-a-name- usually-a-version-number-actually/•  Build Once, Deploy Many - http://earlyandoften.wordpress.com/2010/09/09/build-once-deploy- many/•  Evolutionary Design - http://martinfowler.com/articles/designDead.html•  Continuous Deployment - http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/•  Sonar’s Technical Debt Calculation - http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/•  Gherkin - https://github.com/cucumber/cucumber/wiki/Gherkin 51
  52. 52. Tools  •  Git - http://git-scm.com/•  Subversion - http://subversion.tigris.org/•  Mercurial - http://mercurial.selenic.com/•  Rational ClearCase - http://www-01.ibm.com/software/awdtools/clearcase/•  Serena Dimensions CM - http://www.serena.com/products/dimensions-cm/index.html•  Ant - http://ant.apache.org/•  Ivy - http://ant.apache.org/ivy/•  Maven - http://maven.apache.org/•  Gradle - http://gradle.org/•  JUnit – http://www.junit.org/•  Mockito – http://code.google.com/p/mockito/•  Hamcrest – http://code.google.com/p/hamcrest/•  Spock – http://code.google.com/p/spock/•  dbUnit – http://www.dbunit.org/•  Unitils – http://unitils.org/summary.html 52
  53. 53. Tools  •  Findbugs – http://findbugs.sourceforge.net/•  PMD – http://pmd.sourceforge.net/•  Checkstyle – http://checkstyle.sourceforge.net/•  JIRA – http://www.atlassian.com/software/jira/overview•  GitHub – https://github.com/•  Jenkins - http://jenkins-ci.org/•  TeamCity – http://www.jetbrains.com/teamcity/•  Nexus – http://www.sonatype.org/nexus/•  Artifactory – http://www.jfrog.com/products.php•  Sonar – http://www.sonarsource.org/•  FitNesse –•  Concordion – http://www.concordion.org/•  Cucumber – http://cukes.info/•  easyb – http://www.easyb.org/•  jBehave - http://jbehave.org/•  geb - http://www.gebish.org/ 53
  54. 54. Tools  •  Liquibase – www.liquibase.org/•  Flyway – http://code.google.com/p/flyway/•  Escape – http://code.google.com/p/escservesconfig/•  Puppet – http://puppetlabs.com/•  Chef – http://www.opscode.com/chef/•  Vagrant – http://vagrantup.com/•  JMeter – http://jmeter.apache.org/•  Nagios - http://www.nagios.org/ 54

×