My Blog List

Friday, December 16, 2011

Continuous Integration vs Version Control

Most of new techies have a doubt on What is Continuous Integration? and What is Version Control? What's the relation between them? 
I want to explore and discuss something about this topic here.

Actually Continuous Integration(CI) is more than Version Control (VC). Version control is simply for maintaining different version of docs or files while users committing changes to common repository. But CI is far more than that. CI is fully related to automation  o application build and deployment activities.

Continuous Integration:
CI is a system which is used t automate our building and deployment process. At any time, the executable are ready (to test or to production) with workable condition. It includes,

1. Maintain a code repository
Common shared repository to maintain code. Actually its Version Control system.

2. Automate the build
Using available code in common repository, system will do building process to generate executable. This building process will be done automatically.

3. Make the build self-testing
While doing building process, system itself will check for errors and warnings in build process.

4. Everyone commits to the baseline every day
All available stakeholders will commit their part of code changes every day or as soon as possible after doing changes so that it will not affect the full application. Also if your changes are conflict with repository copy, then it wont allow you to commit unless you get latest, do changes and commit.

5. Every commit (to baseline) should be built
For each and every committing done by users, the build process will be triggered.

6. Keep the build fast
Building process will be fast enough as every day code changes are committed and no major changes will not be there. This will avoid unnecessary ambiguities in code.

7. Test in a clone of the production environment
As we have working software deliverable ready all the times, we can test using the clone of latest executable. This will ensure quality confidence on changes made in new build.

8. Everyone can see the results of the latest build
Everyone can know the status of latest build. If any errors or warnings while building, system will report the errors to all stake holders.

9. Automate Installation / Deployment
As we have latest build for each day, we can automate the deploying processes. This will ensure the latest application build is up for testing on each day.

Version Control:
VC is a system which provides a shared repository to your code and maintains the changes by keeping the different version of file.

CruiseControl, Hudson, teamcity, Bamboo, etc. are CI tools.
SVN, Visual SourceSafe, Git, etc are Version Control tools.
Maven, ant are build tools.

Hope this will you some ideas about CI and VC.

1 comment:

  1. Thanks for sharing great information in your blog. Got to learn new things from your Blog . It was very nice blog to learn about Selenium