continuous delivery - voxxed days thessaloniki 21.10.2016
TRANSCRIPT
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
"Traditional" Delivery
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Integration + QARelease and operation
Acceptance Tests
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
"last mile"
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
"last mile"
Automated Tests
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
"last mile"
Automated Tests
Customer
"Agile" team
Centralized QA IT OperationsAnalysis + Design
Development
Testing + Showcase
Release and operation
Continuous Integration
Integration + QA
Acceptance Tests
"last mile"
Automated Tests
Configuration Management
+Monitoring
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
Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slimADD build/libs/exchange-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-jar","app.jar"]
Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slimADD build/libs/exchange-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-jar","app.jar"]
docker build -t <image_name> .
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>
Example
$ docker run -H 192.168.0.15:2375 -p 8080:8080 -d --name exchange-rate 192.168.0.20/exchange-rate:15
dev machine
github server
jenkins server
push
pull
staging machine
production machine
deploy
acceptance test
deploy
smoke test
docker registry
push
pull
pull