Continuous delivery - tools and techniques

15,128 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
1 Comment
27 Likes
Statistics
Notes
No Downloads
Views
Total views
15,128
On SlideShare
0
From Embeds
0
Number of Embeds
1,200
Actions
Shares
0
Downloads
389
Comments
1
Likes
27
Embeds 0
No embeds

No notes for slide

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

×