How would you define Continuous Integration and what specific components does a CI server contain?
I want to explain to someone in the marketing department what Continuous Integration is. They understand Source control - i.e. they use Subversion. But I'd like to explain to them properly what CI is. The Wikipedia Article never properly defines it, the Martin Fowler article only gives the following, which is basically a tautology followed by a vague explanation of 'integration':
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.
Update: I sent them this image, I couldn't find a simpler one.
![enter image description here][1]
Update 2: Feed back from the marketing chap (for the time when there was 3 questions):
I actually like all 3 answers – for different reasons. I feel like logging in just to thank them all!
Obviously he can't - so thanks on his behalf :) [1]
Update 3: I've realised looking at the Wikipedia article that it does contain the https://i.sstatic.net/Cy2Ny.jpgprinciples which, when you take just the headings, is quite a good list:
- Maintain a code repository
- Automate the build
- Make the build self-testing
- Everyone commits to the baseline every day
- Every commit (to baseline) should be built
- Keep the build fast
- Test in a clone of the production environment
- Make it easy to get the latest deliverables
- Everyone can see the results of the latest build
- Automate deployment