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 - Voxxed Days Bucharest 2017

575 views

Published on

Workshop at the Voxxed Days Bucharest 2017 conference.

Movies:
1. Install Spring Boot application: https://youtu.be/WN4gLvlKU0w
2. Create Continuous Integration pipeline: https://youtu.be/0kuIwjzBvss
3. Create Continuous Delivery pipeline: https://youtu.be/ObQ9AdK-j58

Published in: Technology
  • Be the first to comment

Continuous Delivery - Voxxed Days Bucharest 2017

  1. 1. Rafal Leszko (@RafalLeszko, rafal.leszko@gmail.com) Continuous Delivery: Jenkins, Docker and Spring Boot
  2. 2. Jez Humble
  3. 3. Continuous Delivery The ability to get changes-features, configuration changes, bug fixes, experiments - into production or into the hands of users safely and quickly in a sustainable way
  4. 4. What is Continuous Delivery?
  5. 5. "Traditional" Delivery Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  6. 6. Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  7. 7. Continuous Integration
  8. 8. https://github.com/Dynatrace/ufo
  9. 9. Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  10. 10. "last mile" Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  11. 11. Automated Tests "last mile" Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  12. 12. Automated Testing
  13. 13. Automated Tests "last mile" Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  14. 14. Configuration Management + MonitoringAutomated Tests "last mile" Continuous Integration Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Integration + QA Release and operation Acceptance Tests
  15. 15. Continuous Delivery Pipeline
  16. 16. Checkout Compile Unit Tests Deploy to Staging Acceptance Tests Release Smoke Test
  17. 17. dev machine github server jenkins server push pull
  18. 18. Checkout Compile Unit Tests Deploy to Staging Acceptance Tests Release Smoke Test
  19. 19. issues? ● Each server has to be configured ● Different environment in staging and production ● Different Java version for different applications ● Applications using the same ports ● Versioning
  20. 20. server application app.jar
  21. 21. server application app.jar java -jar app.jar
  22. 22. server application app2.jar java -jar app.jar application app.jar
  23. 23. treat your servers like cattle, not pets
  24. 24. Dockerfile: FROM frolvlad/alpine­oraclejdk8:slim ADD build/libs/vox­0.0.1­SNAPSHOT.jar app.jar ENTRYPOINT ["java","­jar","app.jar"]
  25. 25. FROM frolvlad/alpine­oraclejdk8:slim ADD build/libs/vox­0.0.1­SNAPSHOT.jar app.jar ENTRYPOINT ["java","­jar","app.jar"] docker build ­t <image_name> . Dockerfile:
  26. 26. $ docker run ­­name <container_name> <image_name> 
  27. 27. $ docker run ­­name <container_name> <image_name> 
  28. 28. Docker registry ● registry for docker images
  29. 29. <registry_address>/<image_name>
  30. 30. <registry_address>/<image_name> docker push <image_name>
  31. 31. <registry_address>/<image_name> docker push <image_name> docker pull <image_name>
  32. 32. Port Mapping $ docker run ­p 8080:8080 ­­name <container_name>  <image_name> 
  33. 33. External Docker Host $ docker run ­p 8080:8080 ­­name <container_name>  <image_name>  $ docker run ­H 192.168.0.15:2375 ­p 8080:8080  ­­name <container_name> <image_name>
  34. 34. Example $ docker run ­H 192.168.0.15:2375 ­p 8080:8080 ­d  ­­name exchange­rate 192.168.0.20/exchange­rate:15
  35. 35. dev machine github server jenkins server push pull staging machine production machine deploy acceptance test deploy smoke test docker registry push pull pull
  36. 36. Manual Testing
  37. 37. Legacy Projects
  38. 38. Performance Tests
  39. 39. Blue-Green Deployment
  40. 40. Canary Release
  41. 41. Code coverage
  42. 42. Static code analysis
  43. 43. “continuous”
  44. 44. Feature Toggle
  45. 45. Easy?
  46. 46. Questions?

×