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 work flow and the automation of the build and test cycles. Microsoft utilizes their work flow engine allowing you to define your work flows in a more graphical rather than syntactic way.
Personally, I prefer text. I can put my build work flow in a scripting tool. Then the text may be version controlled. As a result, it is very easy to execute a diff of different versions of the script and know what changed, and who checked it in. You can check in work flow stuff as well, but a diff comparison is much more difficult to find meaning. This is not an area of expertise for me, and may well be much better as you are reading my comment. Please take this part as a tip to look into how they do this if you are evaluating TFS and its build work flow.
Cruise Control is a very popular open systems build engine. I mention it not because it is the only one out there, but it has been popular and represents the common features of a continuous Integration Engine. The Engine does very little by itself. It connects to version control and has the ability execute applications based on a schedule or a trigger such as a version control check in.
Coupled with SVN you get version control and bug/requirements tracking. Because Cruise Control simply starts the process running 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 as well as other utilities. ANT or NANT in turn become your work flow designers.
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 check ins, 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)