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 Thessaloniki 21.10.2016

389 views

Published on

Talk I gave at the Voxxed Days Thessaloniki 2016 conference.

Published in: Technology
  • Be the first to comment

Continuous Delivery - Voxxed Days Thessaloniki 21.10.2016

  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. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests
  7. 7. Continuous Integration
  8. 8. https://github.com/Dynatrace/ufo
  9. 9. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests
  10. 10. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests "last mile"
  11. 11. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests "last mile" Automated Tests
  12. 12. Automated Testing
  13. 13. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests "last mile" Automated Tests
  14. 14. Customer "Agile" team Centralized QA IT Operations Analysis + Design Development Testing + Showcase Release and operation Continuous Integration Integration + QA Acceptance Tests "last mile" Automated Tests Configuration Management + Monitoring
  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/exchange-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-jar","app.jar"]
  25. 25. Dockerfile: FROM frolvlad/alpine-oraclejdk8:slim ADD build/libs/exchange-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-jar","app.jar"] docker build -t <image_name> .
  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. Docker image name <registry_address>/<image_name>
  30. 30. Docker image name <registry_address>/<image_name> docker push <image_name>
  31. 31. Docker image name <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. Easy?

×