2. Write my very first
program in Scheme
language
Start with Java2002
2004
Get introd-
uced to XP
First reading
about Agile/
Scrum
2008
2010
Jump to Agile
World
...still a long journey
3.
4. Stop me for questions
http://anthonyfrasier.com
5. When you have Jenkin
(or Hudsons), you have
CI.
Is it corected?
7. Continuous Integration
Coined by Kent Beck as a part of
eXtreme Programming (1996-1999).
Integrate work frequently into
mainline.
Multiple integrations per day.
Integration verified by automated
tests.
Detect integration errors early.
http://martinfowler.com/articles/continuousIntegration.html
8. Definitions & Mindset
• Develop (code & tests)
• Compile
• Test
• Integrate
• Test more
• Integrate more
• ...
9. Definitions & Mindset
CI is a Software Development
Practice
Involving a change of mindset
Think CI as a part of the
development effort, not as a
separate item
Think CI as a prerequisite for
Agile software development
practices
• Develop (code & tests)
• Compile
• Test
• Integrate
• Test more
• Integrate more
• ...
10. What CI is NOT
• IT IS NOT A SOFTWARE TOOL
• IT IS NOT A BUILD ENVIRONMENT
• IT IS NOT ABOUT HAVING
NIGHTLY BUILDS
• IT IS NOT A CHECKBOX ON A TODO
LIST
16. Why not go for it?
- Increased overhead in
maintaining the CI system
- Too much feedback to act upon
- Additional hardware/software
cost
- Developers should be performing
these activities
- We have too complex a product
- Processes are
preventing us from
committing Frequently
- We don’t have time to do this
- Merging is too laborious
- We cannot do all the tests before
commit/delivery
- Good quality is a prerequisite
for CI
- The tasks have too many
dependencies
- We have never
seen a system
tester
- Branching fo
features were
17. So… How can it fail?
Embracing the excuses
Not caring about it
Excuse #238:
We don’t have
time to do this
19. CI Framework &
Interactions
Build System
Test
Automation
Framework
SUTs
System Under
Test
CI Server
Bug Tracking
System
Test Management
System
Version Control
System
(Subversion, GIT)
22. Best Practices - Level 1
Maintain a single source repository
Commit often
Always integrate
Always green light (100% tests passed)
Fix immediately when broken
Always improve
23. Best Practices - Level 2
Automate the build
Make your build self-testing
Every commit should build on an integration machine
Keep the build fast
Test in a clone of the production environment
Make it easy for anyone to get the latest executable
Everyone can see what’s happening
Automate deployment
/en.wikipedia.org/wiki/Continuous_integration