Editorials

Continuous Integration, Putting It Together

Continuous Integration, Putting It Together
Once you have a methodology working for your source tree you can begin a continuous integration/build process. There are a number of components useful in delivering software, and automating release management. Some tools try to cover as many of the different components as possible. Others integrate with key players. The components are:
Requirements Management
Bug Tracking
Work Management (agile or waterfall)
Version Control
Code Build Engine
Automated Deployment
Automated Testing and Reporting
Tools such as Team Foundation Server integrated with Visual Studio cover all of these components. Others such as the popular Jet Brains Team City integrate with various external tools for bug tracking, version control, testing, and tend to focus on the centralization of workflow and the automation of the build and test cycles.
Cruise Control is a very popular open systems build engine. Coupled with SVN you get version control and bug/requirements tracking. Because Cruise Control simply starts the process running with a version control checking begins, and can fire off executables in response, you can build a powerful customized build system using tools such as ANT or NANT as scripting engines. These in turn follow your build workflow.
Team City and Cruise Control allow you to tie in products such as Red Gates Continuous Database Integration engine. This tool handles the task of deploying database modifications synchronized with your application bits. This, in my opinion, is the most difficult part of a release. Bits are easy to deploy. Databases modifications are not easy. You must have a process to transform existing data into another form without loss, which is hard to do using the same tools as those for Java, or .Net.
Some continuous build tools will also maintain a repository of test cases, benchmarks, and a history of comparisons as each test run is performed. Your requirements may be just as easily served using tests as simple as jUnit or nUnit amongst many others. You may not have a history of results in some repository to mine later on. But, you may readily get a comprehensive comparison of your requirements to current functioning bits just compiled and tested. Most times this is more than sufficient.
A couple readers have asked what is the best Continuous integration tool or the best version control tool. In my opinion, the best tools are the ones that connect together well reducing the need for duplicate work on the behalf of the developer.
For that reason, some opt for tools like Team Foundation Server. The 2012 version of TFS is better than the predecessors I am told, not having use them. Even the 2012 version is not as strong on certain features are other products for sale or open systems. But, all the pieces work together and are integrated. As a result, you can see how things were done starting with requirements, work estimation, work execution and Version Control checkins, bug tracking, continuous build and test results.
I am not qualified to answer what is the best product or product combination because there are many I have not used, and it has not been a goal of mine to compare them.
For those of you who have favorite suites or tool sets, many of which I have intentionally left out, why not get into the conversation? Drop a note to btaylor@sswug.org with the tools you use, and how you have configured them to work together. It may be nice to hear how they compare with others you may have experienced as well.
Cheers,
Ben

$$SWYNK$$

Featured Article(s)
SQL Server 2012 Full-Text Search Optimization Tips
In this article, you can find some tips about performance tuning and optimizing full-text search in SQL Server 2012.

Featured White Paper(s)
Top 10 Tips for Optimizing SQL Server Performance
read more)