5. 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.
Martin Fowler
6. Success – a ten step list
1. Maintain a Single Source Repository
2. Automate the Build
3. Make Your Build Self-Testing
4. Everyone Commits To the Mainline Every Day
5. Every Commit Should Build the Mainline on an Integration Machine
6. Keep the Build Fast
7. Test in a Clone of the Production Environment
8. Make it Easy for Anyone to Get to the Latest Deployment
9. Everyone can see what's happening
10. Automate Deployment
12. HP LaserJet Firmware
Overall development costs
reduced by ~40%
Programs under development
increased by ~140%
Development costs per program
reduced by 78%
Resources driving innovation
increased by 5x
14. Anti Continuous Integration slide
SUCCESS OF CONTINUOUS INTEGRATION DEPENDS ON THE
STRENGTH OF THE SYSTEM AND THE DEGREE OF TEST-COVERAGE
Time consuming things that you need to do:
Think if you actually need CI
Build, configure, automate and
maintain the CI system
Write tests to check the quality of the
code / build
15. If you want to Continuously Integrate…
… here’s a shortlist:
1. Source control
2. Build
3. Deploy
19. How Flickr does it
No additional branches, only a head branch
Flags for features with configurable values:
• enabled
• disabled
• enabled for host X
• disabled for host X
if ($cfg.enable_unicorns) {
// do something new and amazing
}
else {
// do the current boring stuff
}
21. Do you / your company?
Use Team Foundation Server
Use Visual Studio
Use Test Manager
Develop medium-large scale .NET solutions
Then you have to try out Release Management
22. But how does Release Management help?
Team Foundation Server offers:
• Work management (boards, stories, tasks, etc.)
• Source Control (TFVC, Git)
• Test management
• Build system
Team Foundation Server does not offer:
• Deploy system
23. CodeCamp use-case
Have a web application that you wish to deploy on 3 environments:
Test – for QA
Stage – for simulating the production
Production – offer the changes to the end-user (fully functional and tested)
24. DEV
Developer pushes code
Trigger build
Source control Build server
Drop location
Drop build
Release Management
Trigger deploy
Approve Notify Approve Notify
PROD STAGE TEST