This presentation will give you an introduction to Continuous Integration by summarizing the technique, how to use it and share some real life experience.
2. Continuous Integration
CI = Continuous Integration
What and why
How to get started
Experience – set up examples
Next step
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
3. What is integration?
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
6. Stepping
out of your
comfort zone
don’t like integration?
Integrate frequently and
soon it will be a non-event
non-
jesperforslund.se
Photo: isayx3 Continuous Integration - Karlskrona 2010-09-22
7. Finding the bug
Small increments = less to search
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
8. A software development project
Reference project set up
Development
team
Customer
Management
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
9. Challenges in your everyday project
What CI can solve
1. Conflicts in version control system
2. Build and deployment requires manual effort
3. Providing deployable software at any time
4. Defects are discovered late
5. Current state of version controlled system is unknown
6. Low quality software
7. Getting feedback from customer during development
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
10. Introduction
CI on one slide
“Continuous Integration is a software development practice
where members of a team integrate their work frequently,
usually each person integrates at least daily - leading to multiple
integrations per day. Each integration is verified by an
automated build (including test) to detect integration errors as
quickly as possible.
Many teams find that this approach leads to significantly
reduced integration problems and allows a team to develop
cohesive software more rapidly.”
Martin Fowler
http://martinfowler.com/articles/continuousIntegration.html
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
11. Build software at every change
Basic CI
eview
Feedback
Mechanism Generate
Commit Changes
Developer
Run Private Build
Commit Changes
Poll
Commit Changes CI Server Build Script
Developer Subversion Integration Build Machine
Run Private Build Version Control Repository
Developer
Run Private Build
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
12. Build software at every change
CI server activities
Poll
CI Server Build Script
Subversion Integration Build Machine
Version Control Repository
Get the latest code
Compilation
Test Execution
DB Integration
Code Inspections
Automated
Deployment
Documentation
Generation
Release Package jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
13. 10 core practices
The 10 step program to CI
1. Maintain a single source repository
2. Automate the build
3. Make the build self-testing
4. Commit every day
5. Every commit builds on an integration machine
6. Keep the build fast
7. Test in a clone of the production environment
8. Make it easy to get the last executable
9. Everyone can see what’s happening
10. Automate deployment
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
14. Set up examples
continuous integration implemented
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
15. Default
Set up example #1
eview
Feedback
Mechanism Generate
Commit Changes
Developer
Run Private Build
Commit Changes
Poll
Commit Changes CI Server Build Script
Developer Subversion Integration Build Machine
Run Private Build Version Control Repository
Developer
Run Private Build
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
16. Automated deployment
Set up example #2
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
17. Increase visibility
Set up example #3
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
18. Including third party product
Set up example #4
eview
Customer
Explore ongoing development
eview
Feedback
Mechanism Generate
Deploy always
Commit Changes
Demonstration Server
Developer
Run Private Build
Deploy on demand
Commit Changes
Poll
Deploy on demand
Commit Changes CI Server Build Script
Developer Subversion Integration Build Machine
Run Private Build Version Control Repository
Acceptans Test
Commit Changes Server
Developer Production
Run Private Build Server
Development server
Third party product jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
19. Start using CI
how to get started
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
20. Project roadmap
Print me!
1. Development team commits to the CI practice
2. Get a CI server
3. Extract the build script
4. Provide a feedback system
5. Automate the deployment
6. Write tests for core functionality
Keep it continuous = do not stop!
etrospectives – continuous improvement!
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
21. Developers guideline
Print me!
1. Commit early and often – make it a non-event
2. Never commit broken code – update, build locally then commit
3. Fix broken builds – top priority to resolve
4. If the build fail – make sure that it fail fast
5. Gather metrics & understand them - use tools and read reports
6. Build in target environments – a local build is not the master
7. Create artefacts – each build should generate a package
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
22. Final slide
Remember me
Avoid Integration Hell – use CI
high ROI – happy developers – relaxed customer
CI – the path to a better life!
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
25. References
Learning more
Literature
Continuous Integration: Improving Software Quality and Reducing Risk
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Agile Patterns: The Technical Cluster
http://martinfowler.com/articles/continuousIntegration.html
http://en.wikipedia.org/wiki/Continuous_integration
CI Tools
http://damagecontrol.codehaus.org/Continuous+Integration+Server+Feature+Matrix
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
26. What is the return?
Motivation
Reduced risk
Testing is done early and often
Defects are identified early
Visibility is increased
Automate to go faster
Less manual effort – more time to deliver value
Test in parallel, not everything at the end
Integration becomes a non-event
No more integration hell
No more hardening iterations
Many teams using CI report
that the advantages of CI
well outweigh the disadvantages
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
27. Tools
CI Server software
Hudson
Written in Java
No install required
Easy to use
Powerful
Great support
Cruise Control
The first tool and widely used
Continuum
Focused on MAVEN
Powerful but more complex UI
Bamboo
Commercial product that works with Jira
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
29. About me
Jesper Forslund
Jesper Forslund is an entrepreneur and consultant at Logica with
wide experience from all software development disciplines and
business development. He has more than 5 years experience
from software development, with a strong focus on methods
and practice. Jesper is an ambassador for Agile and a supporter
of Software Craftsmanship.
Links
www.jesperforslund.se
http://se.linkedin.com/in/forslund
www.logica.se
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22
30. Photos
Thanks for the photos
CHEVY CAPRICE CHAOS by Jason
http://www.flickr.com/photos/14043270@N08/2686300859
The Door to Hell by Flydime
http://www.flickr.com/photos/flydime/4671890969/
The Anti-Ad by Ed McGowan
http://www.flickr.com/photos/isayx3/3605989887
Ain't it crazy? By Jerry Berg
http://www.flickr.com/photos/ghb624/2783091436
Bug* by Gaëtan Bourque
http://www.flickr.com/photos/lesec/183232023
Smaragdine field by Katarina Stefanović
http://www.flickr.com/photos/jup3nep/3588516981/
jesperforslund.se
Continuous Integration - Karlskrona 2010-09-22