Continuous Integration,
Delivery and Deployment
Utrecht, 24-sep-2013
Martijn van der Kamp
How we deliver software
• We deliver software in a structured and ordered way. Software installs without
errors in 1 try i...
Developer vs PM/Manager/Client
• The production environment has crashed.
• This prototype is rough and not ready and needs...
Continuous What?
Continuous
Integration
Continuous
Delivery
Continuous
Deployment
Continuous
integration
Continuous
Delivery
Continuous
deployment
• Automate the build
• Automatically test the code as oft...
• Deliver code to a production-like environment with a user
base (UAT)
• Automated testing procedures during deployment
• ...
Continuous
integration
Continuous
Delivery
Continuous
deployment
• All what was done in the previous two steps, but now
au...
Agile
Governance
Configuration
Management
Continuous
Integration
Testing
Continuous Delivery
Continuous Deployment
The con...
Continuous Integration (CI)
The toolbox:
• Version Control
• CI Server
• Build automation
tool
• Test suite
The mindset:
...
Continuous Integration: example
Commit
code to SVN
Code
analysis
Compile
application
Run Unit
test
Deploy
application
Run ...
An example in Jenkins!
Some mistakes to look out for with CI
Mistake: Loose jobs that perform the tasks
It is easy to forget to run a job, you wo...
Continuous Delivery
• Is everything that you did with Continuous Integration but now we
are adding deployment to a user ba...
Problems with waterfall deployment
• Long issue detection and feedback loop (did you already fix it?)
• Lack of cooperatio...
The last step
• Manual deployments
• Insufficient configuration management
• Infrequent, error prone deployments
Stressful...
Requirements
Build
Compile
test
How the development cycle will look like
Requirements
Build
Compiletest
Deploy
Requirement...
Continuous Delivery: example
Check out
artifacts from
repository
Deploy to
production-like
environment
Run tests
Generate
...
Continuous Deployment
• Is everything you did before with Continuous Integration and
Continuous Delivery but now all the w...
Continuous Deployment: example
Check out
artifacts from
repository
production
environment
Run tests
Generate
reports
To Summarize
• Continuous integration is an effective way to solve integration
problems
• Continuous integration is a grea...
Watch & Read
• Kohsuke Kawaguchi who introduces us to Hudson, an open-source
continuous integration (CI) system, which imp...
Contact information
Martijn
van der Kamp
Oracle Consultant
martijn.vander.kamp@capgemini.com
Insert
contact
picture
Upcoming SlideShare
Loading in...5
×

Continuous integration, delivery & deployment

575

Published on

A presentation on Continuous Integration, Delivery and Deployment. This presentation was used as an introduction to the subject.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
575
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Continuous integration, delivery & deployment"

  1. 1. Continuous Integration, Delivery and Deployment Utrecht, 24-sep-2013 Martijn van der Kamp
  2. 2. How we deliver software • We deliver software in a structured and ordered way. Software installs without errors in 1 try in the clients environment. Our clients are happy and satisfied with our delivery process. How long does it take to get one line of code into production?
  3. 3. Developer vs PM/Manager/Client • The production environment has crashed. • This prototype is rough and not ready and needs to be rewritten before we hand it over to our customers. • The prototype we are now using in production keeps crashing. • We want to work in a test-driven development mode. • I can manually hack the production server to improve performance and stability to overcome the issues we're having. • The manual hack I did last week has caused the disks to fill up and the production server has crashed. • You're not going home until it's fixed. I'll get the pizza! • Don't worry, you'll get time to rewrite it. (tonight) • You're not going home until it's fixed. I'll get the pizza! • That will only slow things down and we don't have the time. • I fully trust your judgment on this, just get it done quickly. • You're not going home until it's fixed. I'll get the pizza!
  4. 4. Continuous What? Continuous Integration Continuous Delivery Continuous Deployment
  5. 5. Continuous integration Continuous Delivery Continuous deployment • Automate the build • Automatically test the code as often as possible for early detection of errors • Any feedback will come back sooner, before the code has left the mind of the developer • Everyone can see what is happening Continuous Integration
  6. 6. • Deliver code to a production-like environment with a user base (UAT) • Automated testing procedures during deployment • Higher frequency, smaller volume. • Automated deployments(as much as possible) • Any feedback will come back sooner, before the code has left the mind of the developer Continuous integration Continuous Delivery Continuous deployment Continuous Delivery
  7. 7. Continuous integration Continuous Delivery Continuous deployment • All what was done in the previous two steps, but now automatically between all environments and into production Continuous Deployment
  8. 8. Agile Governance Configuration Management Continuous Integration Testing Continuous Delivery Continuous Deployment The continuous framework
  9. 9. Continuous Integration (CI) The toolbox: • Version Control • CI Server • Build automation tool • Test suite The mindset: Open Honest courageous dialogue The environment: Sit together Open chat-room / forum
  10. 10. Continuous Integration: example Commit code to SVN Code analysis Compile application Run Unit test Deploy application Run test(s) Generate report Code analysis report Build number Test report
  11. 11. An example in Jenkins!
  12. 12. Some mistakes to look out for with CI Mistake: Loose jobs that perform the tasks It is easy to forget to run a job, you wont be able to easily see if your friends also ran all mandatory jobs. Mistake: 1 job that does it all Your CI process should be granular in the most useful way. Having only 1 job that does it all still requires you to deep dive into your code-test- deployment, where several can already exclude and better specify what went wrong. Mistake: committing broken code All broken code should automatically be uncommitted and the state of the environment should rolled-back to keep the latest version working.
  13. 13. Continuous Delivery • Is everything that you did with Continuous Integration but now we are adding deployment to a user based environment to the cycle, such as a UAT environment. • Getting rid of waterfall deployment
  14. 14. Problems with waterfall deployment • Long issue detection and feedback loop (did you already fix it?) • Lack of cooperation between business and IT (what we actually wanted…..) • Inability to change. Requirements Build Compile test Requirements Build Compile test Requirements Build Compile test Deploy
  15. 15. The last step • Manual deployments • Insufficient configuration management • Infrequent, error prone deployments Stressful releases!
  16. 16. Requirements Build Compile test How the development cycle will look like Requirements Build Compiletest Deploy Requirements Build Compile test Requirements Build Compile test Deploy Requirements Build Compiletest Deploy Requirements Build Compiletest Deploy
  17. 17. Continuous Delivery: example Check out artifacts from repository Deploy to production-like environment Run tests Generate reports
  18. 18. Continuous Deployment • Is everything you did before with Continuous Integration and Continuous Delivery but now all the way into production.
  19. 19. Continuous Deployment: example Check out artifacts from repository production environment Run tests Generate reports
  20. 20. To Summarize • Continuous integration is an effective way to solve integration problems • Continuous integration is a great way to improve the quality of the software. • Continuous Delivery removes the need of waterfall deployment • Continuous Delivery makes the deployments more predictable • Continuous Deployment gives best value for money
  21. 21. Watch & Read • Kohsuke Kawaguchi who introduces us to Hudson, an open-source continuous integration (CI) system, which improves the productivity of a development team by automating various things. https://www.youtube.com/watch?v=6k0S4O2PnTc • Atlassian toolbox: Greenhopper: https://www.youtube.com/watch?v=KWiSkH9Tqbo Jira: https://www.youtube.com/watch?v=ca8n9uW3afg Bamboo:https://www.youtube.com/watch?v=2IRTnbzk0RQ
  22. 22. Contact information Martijn van der Kamp Oracle Consultant martijn.vander.kamp@capgemini.com Insert contact picture

×