Open Source Continuous Integration Tools, Page 2
Enter Continuous Integration
The introduction of a continuous integration paradigm into the aforementioned cycle fixes the integration problem. CI allows you to know almost immediately if the build process or QA or anything else failed due to a change in the code as a result of a bug. If a developer checks in a piece of code that breaks the build process, you want to know that as soon as possible. For instance, if your integration tests fail after a developer changes an interface, you want to know that right away.
In continuous integration, when code is checked in, the repository is built, basic (or even advanced) tests run, and a new drop is ready for further QA. Some open source tools can help bring this concept to your SEL.
Open Source Tools for Continuous Integration
Hudson (whose primary developers recently ported their own version of the project to GitHub and renamed it Jenkins) is one of many open-source tools (MIT license) available today that can assist with your CI efforts. Hudson targets the following steps in the overall software engineering lifecycle:
- Pre-build cleanup and environment setup
- Actual build process (compile and link)
- Post-build actions such as cleanup, unit test (jUnit commands, for example), integration testing, and deployment
The notification events included in Hudson can alert and/or notify the team about the status of the build.
Hudson can be installed on a remote server in the data center, which potentially is where you have your repository and test environment setup. Hudson can be configured through its Web interface so that various scripts or commands (cron, shell, etc.) can be executed at various points through the process.
Think of Hudson as the final step needed to complete your software engineering lifecycle. Hudson seamlessly integrates with CVS, Subversion, Git and Clearcase and can execute projects based on either Apache Ant or Apache Maven.
Another open source tool (BSD license) with similar functionality to Hudson is CruiseControl (cruisecontrol.sourceforge.net). However, CruiseControl has specific plug-ins for .NET and Ruby.
Either of these two products, along with many other open-source or commercial tools targeting continuous integration, should become part of your overall software engineering lifecycle -- if they are not already!
About the Author
Art Sedighi is a freelance writer and IT consultant. Before that, Sedighi was the CTO and founder of SoftModule -- now part of Univa UD -- where he was the chief architect for SoftModule's xFactor product. Sedighi received both his BS in Electrical Engineering and MS in Computer Science from Rensselaer Polytechnic Institute. He also holds an MS in Bioinformatics from The Johns Hopkins University.