Continuous Delivery
The Continuous Delivery toolstack
for embedded Java
by Leif Sørensen, Partner at Praqma
Continuous Delivery
Praqma
Continuous Delivery Experts
We automate
software
development
processes and
verification
techniq...
Continuous Delivery
Continuous Delivery
Defies Phases
Software development is iterative by nature.
Traditionally each iter...
Continuous Delivery
Agile manifesto
Continuous Delivery
Continuous Delivery
A Staged Approach
Commit
Rejected
Released
Pre-test
Static
Analysis
Passed
Failed
...
Continuous Delivery
Signs of
Continuous Delivery Maturity
“Early Branching”
Branches used
for releases
Merges are rare
Uni...
Continuous Delivery
Cobertura
● A code coverage utility for Java.
Javadoc
Checkstyle
● Junit
● A programmer-oriented testi...
Continuous Delivery
Jenkins CI - What it does
Jenkins CI make
the state of the software
visible
Continuous Delivery
Build pipelines
Continuous Delivery
Cobertura Code Coverage
Continuous Delivery
Cobertura Code Coverage
Continuous Delivery
Checkstyle, Open Tasks
1
Praqmatic Software
Development
Continuous Delivery
The Continuous Delivery toolstack
for embedded Java
by Leif Sørensen,...
2
Praqmatic Software
Development
Continuous Delivery
Praqma
Continuous Delivery Experts
We automate
software
development
p...
3
Praqmatic Software
Development
Continuous Delivery
Continuous Delivery
Defies Phases
Software development is iterative b...
4
Praqmatic Software
Development
Continuous Delivery
Agile manifesto
2 important points from agile manifesto
5
Praqmatic Software
Development
Continuous Delivery
Continuous Delivery
A Staged Approach
Commit
Rejected
Released
Pre-te...
6
Praqmatic Software
Development
Continuous Delivery
Signs of
Continuous Delivery Maturity
“Early Branching”
Branches used...
7
Praqmatic Software
Development
Continuous Delivery
Cobertura
● A code coverage utility for Java.
Javadoc
Checkstyle
● Ju...
8
Praqmatic Software
Development
Continuous Delivery
Jenkins CI - What it does
Jenkins CI make
the state of the software
v...
9
Praqmatic Software
Development
Continuous Delivery
Build pipelines
10
Praqmatic Software
Development
Continuous Delivery
Cobertura Code Coverage
11
Praqmatic Software
Development
Continuous Delivery
Cobertura Code Coverage
12
Praqmatic Software
Development
Continuous Delivery
Checkstyle, Open Tasks
Upcoming SlideShare
Loading in …5
×

The Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma

621 views

Published on

Oplægget blev holdt ved InfinIT-arrangementet "Temadag: Java for real-time and embedded systems", afholdt hhv. 12. og 13. september 2013. Læs mere om arrangementet her: http://infinit.dk/dk/arrangementer/tidligere_arrangementer/temadag_java_for_real-time_and_embedded_systems.htm

Published in: Sports, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
621
On SlideShare
0
From Embeds
0
Number of Embeds
85
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

The Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma

  1. 1. Continuous Delivery The Continuous Delivery toolstack for embedded Java by Leif Sørensen, Partner at Praqma
  2. 2. Continuous Delivery Praqma Continuous Delivery Experts We automate software development processes and verification techniques We do sponsored Open Source development. Our focus is strong on Open Source tools especially Jenkins CI Regional service Service partner agreements
  3. 3. Continuous Delivery Continuous Delivery Defies Phases Software development is iterative by nature. Traditionally each iteration is seen as divided into phases Development Integration Testing Deployment Release The workload in each phase is unpredictable ...and so becomes the release date The business stakeholders must be able to decide the release date Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Every commit is a potential release candidate
  4. 4. Continuous Delivery Agile manifesto
  5. 5. Continuous Delivery Continuous Delivery A Staged Approach Commit Rejected Released Pre-test Static Analysis Passed Failed Deploy & Test Passed Failed Failed Release & Deploy Passed Failed
  6. 6. Continuous Delivery Signs of Continuous Delivery Maturity “Early Branching” Branches used for releases Merges are rare Unit Test Code Coverage Verification before commit run in developer's Workspace Common nightly build Build status is notified to committer “Late branching” Branches used for work isolation Merges are common Metrics on technical debt & compliance Mock-up's & proxies Ci server builds on commit Artifacts are managed Latest build status Is available to all stakeholders Pre-tested Commits Integration branch is pristine Peer-reviews Automated Functional Test No build scripts -only configurations Dependencies are managed Trend reports Build status can be subscribed to (pull vs push) All commits are tied to tasks Individual history rewrites In DVCS Test Data Test in target Distributed builds Staged build sequence Monitors in work areas show real-time status Release notes & traceability analysis are generated automatically Automated Acceptance Test Build from VM CI server orchestrate VMs Build reports and statistics are shared with customer and public Visibility SCM Test + QA Build Novice Expert
  7. 7. Continuous Delivery Cobertura ● A code coverage utility for Java. Javadoc Checkstyle ● Junit ● A programmer-oriented testing framework for Java. Tools
  8. 8. Continuous Delivery Jenkins CI - What it does Jenkins CI make the state of the software visible
  9. 9. Continuous Delivery Build pipelines
  10. 10. Continuous Delivery Cobertura Code Coverage
  11. 11. Continuous Delivery Cobertura Code Coverage
  12. 12. Continuous Delivery Checkstyle, Open Tasks
  13. 13. 1 Praqmatic Software Development Continuous Delivery The Continuous Delivery toolstack for embedded Java by Leif Sørensen, Partner at Praqma
  14. 14. 2 Praqmatic Software Development Continuous Delivery Praqma Continuous Delivery Experts We automate software development processes and verification techniques We do sponsored Open Source development. Our focus is strong on Open Source tools especially Jenkins CI Regional service Service partner agreements ● Continuous delivery experts, experienced in working in regulated environments such at FDA, Solvency II, MISRA and ISO ● We help software development teams setup their software development processes, continuous integration and continuous delivery strategies. ● Open source community karma ● Offer SLA to our customers, that enables safe use of OSS ● Contribute by proxy ● Hvem er vi/jeg? ● Hvem er I?
  15. 15. 3 Praqmatic Software Development Continuous Delivery Continuous Delivery Defies Phases Software development is iterative by nature. Traditionally each iteration is seen as divided into phases Development Integration Testing Deployment Release The workload in each phase is unpredictable ...and so becomes the release date The business stakeholders must be able to decide the release date Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Development+Integration+ Testing+Deployment+ Release Every commit is a potential release candidate ● Software development is iterative by nature, each release is followed by another, and each release tend to be regarded as a separate cycle ● Traditionally the SW process is perceived as having phases, which all -except the development itself - deals with consolidating the development effort. ● The consolidating phases are all notoriously unpredictable. ● The release data can not be planned ● The solution is to to automate all consolidation and verification steps and execute them upon every single commit ● The most important ingredients are an unquenchable urge to automate everything and a well greased build environment ● The phases – as we know them from traditional SW development – has got to be eliminated ● CD defies phases
  16. 16. 4 Praqmatic Software Development Continuous Delivery Agile manifesto 2 important points from agile manifesto
  17. 17. 5 Praqmatic Software Development Continuous Delivery Continuous Delivery A Staged Approach Commit Rejected Released Pre-test Static Analysis Passed Failed Deploy & Test Passed Failed Failed Release & Deploy Passed Failed Imagine that you should draw a state-transition diagram of the process that should validate a release candidate from the point where it's committed to the VCS and through the verifications that would finally validate it. It Could probably look something like this. Point is: ● It's a staged model ● Each stage consist of an action AND a decision ● If this shall be automated then BOTH the action and the decision must be automated Jenkins Can do this!
  18. 18. 6 Praqmatic Software Development Continuous Delivery Signs of Continuous Delivery Maturity “Early Branching” Branches used for releases Merges are rare Unit Test Code Coverage Verification before commit run in developer's Workspace Common nightly build Build status is notified to committer “Late branching” Branches used for work isolation Merges are common Metrics on technical debt & compliance Mock-up's & proxies Ci server builds on commit Artifacts are managed Latest build status Is available to all stakeholders Pre-tested Commits Integration branch is pristine Peer-reviews Automated Functional Test No build scripts -only configurations Dependencies are managed Trend reports Build status can be subscribed to (pull vs push) All commits are tied to tasks Individual history rewrites In DVCS Test Data Test in target Distributed builds Staged build sequence Monitors in work areas show real-time status Release notes & traceability analysis are generated automatically Automated Acceptance Test Build from VM CI server orchestrate VMs Build reports and statistics are shared with customer and public Visibility SCM Test + QA Build Novice Expert
  19. 19. 7 Praqmatic Software Development Continuous Delivery Cobertura ● A code coverage utility for Java. Javadoc Checkstyle ● Junit ● A programmer-oriented testing framework for Java. Tools
  20. 20. 8 Praqmatic Software Development Continuous Delivery Jenkins CI - What it does Jenkins CI make the state of the software visible
  21. 21. 9 Praqmatic Software Development Continuous Delivery Build pipelines
  22. 22. 10 Praqmatic Software Development Continuous Delivery Cobertura Code Coverage
  23. 23. 11 Praqmatic Software Development Continuous Delivery Cobertura Code Coverage
  24. 24. 12 Praqmatic Software Development Continuous Delivery Checkstyle, Open Tasks

×