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 call graphs, and checking for memory leaks. It does all this automatically after something is changed in mercurial (our VCS of choice). Since I am now working on some legacy code, I can't imagine life without it. I will try to post some articles on how we set some of these pieces up.
Anyone else out there using CI? Which one and how do you like it?
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 call graphs, and checking for memory leaks. It does all this automatically after something is changed in mercurial (our VCS of choice). Since I am now working on some legacy code, I can't imagine life without it. I will try to post some articles on how we set some of these pieces up.
Anyone else out there using CI? Which one and how do you like it?
Comments
Post a Comment