Saturday, May 19, 2012

About Continuous Integration

 

ci01

Have you heard about continuous integration? I really hope that your answer is yes, because if not, you should take the time to learn about it, understand it and put it in place in your company as soon as possible !

Continuous Integration, known as CI, is the practice of continuously integrating code changes and new features into the code repository and the different development environments. Is all about increasing the quality control and reducing the time to implement fixes and deploy deliverables. Is based on the concept of small tasks and efforts, applied frequently.

There are a few main points that CI tries to tackle, among some of them we can mention:

  • Source control
  • Build automation
  • Regular commits
  • Automated testing
  • Automated deployment
  • Build transparency
  • Time to fix
  • Time to production

I could go over each topic and add my own experiences working on different companies, on different type of projects, in different countries, but instead, check out this great article from Martin Fowler regarding the ins and outs of continuous integration implementation.

One key advantage is for developers to quickly identify issues as soon as they are introduced, so they can be fixes as soon as possible without wasting time just to understand and find the problem.

Implementing a CI process in your development lifecycle is life saving and a requirement for any modern software development shop. The CI process empowers developers to have a better control over the cycle, increase code quality and implementation practices and reduce the time it takes to deploy code changes, including new features and bug fixes.

It encompasses source control techniques, build automation, unit testing, install and deployment processes, enhancing the development process.

There are several tools out there that are relatively easy to setup and with different price plans according to different scenarios and needs. Among the most popular, you will find:

Most of my experience has been with Team Foundation Server and TeamCity. TFS is particularly great for .NET projects and if you can afford the TFS license and server setup and maintenance costs. I definitely think that TFS is probably one of the best CI servers out there. However, it is expensive and developers from other platforms and technologies have a hard time getting into it.

TeamCity, from the guys of JetBrains on the other side, is a cheap option and really easy to setup. Is quick and efficient, and plays well with different source control tools, unit test frameworks and different platforms and technologies. I highly recommend you to try it out.

Check out my latest post on how to setup TeamCity step by step.

If you want to understand more about the CI process and how to implement it in your company, I highly recommend you to check Marcin Kawalerowicz book, “Continuous Integration in .NET”. The book is well written, easy to follow and takes you from the basics of the CI process implementation to advance topics, using three CI servers, TeamCity, TFS and Cruise Control as examples.

I hope that this post gets you started if you haven’t already and for those of you who are already on the CI boat, I hope I can throw in some useful references.

Cheers!

No comments:

Post a Comment