As I mentioned in a previous post , we are using Jenkins CI . Here are the top 7 things that we are using it for. 1. Build from Source Control This is the most basic, but also the most crucial. If you don't know what source code is being used in production, then you are in some trouble. If your CI server can build it, then you guarantee that at least one other person can build the code. If not, then you don't know if someone has some magic settings in their IDE or in their environment variables. Does it guarantee that you can build the code on your machine? No, but it will give you a better chance.
When I started my new job, I was handed a project that no one knew where the production source resided. In source control, there were three or so versions of the project, but none of them seemed to match up with what was running in prod. Ouch! "How can we prevent this?", I thought. Well one way is to have it automatically built every day (or every time it is changed) pulled from a VCS repository. Then, always release from the automated build. I started looking into CI as a build server initially. We have a unique environment where we are heavy in Java and C++ with some sprinkles of C, Python, Delphi, C#, and Groovy. Flexibility was our top priority. We started looking at our options. We came across a few TeamCity, Jenkins (Hudson at the time), and CruiseControl. Jenkins seemed like it had the most plugins for every language which made it the most flexible. Now, Jenkins is used for running the build, unit tests, code coverage, profiling, generating profiling