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

  • 168 views
Uploaded 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: …

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

More in: Sports , Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
168
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Continuous Delivery The Continuous Delivery toolstack for embedded Java by Leif Sørensen, Partner at Praqma
  • 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. 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. Continuous Delivery Agile manifesto
  • 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. 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. Continuous Delivery Cobertura ● A code coverage utility for Java. Javadoc Checkstyle ● Junit ● A programmer-oriented testing framework for Java. Tools
  • 8. Continuous Delivery Jenkins CI - What it does Jenkins CI make the state of the software visible
  • 9. Continuous Delivery Build pipelines
  • 10. Continuous Delivery Cobertura Code Coverage
  • 11. Continuous Delivery Cobertura Code Coverage
  • 12. Continuous Delivery Checkstyle, Open Tasks
  • 13. 1 Praqmatic Software Development Continuous Delivery The Continuous Delivery toolstack for embedded Java by Leif Sørensen, Partner at Praqma
  • 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. 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. 4 Praqmatic Software Development Continuous Delivery Agile manifesto 2 important points from agile manifesto
  • 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. 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. 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. 8 Praqmatic Software Development Continuous Delivery Jenkins CI - What it does Jenkins CI make the state of the software visible
  • 21. 9 Praqmatic Software Development Continuous Delivery Build pipelines
  • 22. 10 Praqmatic Software Development Continuous Delivery Cobertura Code Coverage
  • 23. 11 Praqmatic Software Development Continuous Delivery Cobertura Code Coverage
  • 24. 12 Praqmatic Software Development Continuous Delivery Checkstyle, Open Tasks