CruiseControl and CruiseControl.Net (CCNet)
In software development, CruiseControl (CruiseControl.NET, CCNet) is a Java-based framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds. It allows one to perform a continuous integration of any software development process.
CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process. It includes dozens of plugins for a variety of source controls, build technologies, and notifications schemes including email and instant messaging. A web interface provides details of the current and previous builds. And the standard CruiseControl distribution is augmented through a rich selection of 3rd Party Tools.
The build loop is designed to run as a daemon process, which periodically checks the revision control system for changes to the codebase, builds if necessary, and publishes a notice regarding the status of the software build.
CruiseControl is written in Java but is used on a wide variety of projects. There are builders supplied for Ant, NAnt, Maven, Phing, Rake, and Xcode, and the catch-all exec builder that can be used with any command-line tool or script.
CruiseControl.NET is an Automated Continuous Integration server, implemented using the Microsoft .NET Framework.
CruiseControl.NET (CCNet) consists of a suite of applications, but at its core is the CruiseControl.NET Server which is an automated integration server. The Server automates the integration process by monitoring the team's source control repository directly. Every time a developer commits a new set of modifications, the server will automatically launch an integration build to validate the changes. When the build is complete, the server notifies the developer whether the changes that they committed integrated successfully or not.
If you’re writing code on the Microsoft .NET platform and using NAnt to build your project, here’s another opportunity to follow along. CruiseControl.NET is a feature port of CruiseControl to the .NET platform. It integrates with the NAnt build tool and the NUnit unit-testing framework. And we’d be remiss if we didn’t mention the optional CCTray utility that shows a green or red build status icon in your Windows system tray.
The CCNet Server offers several key features:
• Integration with a variety of Source Control systems
• Integration with other external tools, such as NAnt and Visual Studio
• Can build multiple projects on one server
• Remote management and reporting
CruiseControl.NET Integration Process
1. The CruiseControl.NET Server is started, and a project is started according to a Project Configuration Block in the Server's Configuration
2. CCNet checks the source code repository for modifications that have occurred since the last build attempt.
a. When modifications are detected
i. CCNet labels the project with CCNETUNVERIFIEDxxx (xxx = date/time) (Visual Source Safe only, optionally)
ii. CCNet gets the latest version of the source from the source control repository
iii. CCNet starts the build by executing the tasks in the section of the ccnet.config file. In this example, the build will execute the task to run the NAnt build file.
3. NAnt processes the build script specified by the element . The following steps make up one possible scenario.
a. NAnt runs VS.NET using either the task or the task. The task provides better reporting capability for later steps.
b. NAnt runs NUnit using the task or the task
c. NAnt runs FxCop using the task
4. CCNet receives the outcome of the NAnt execution (Success/Failed)
a. If the build was successful, CCNet replaces the CCNETUNVERIFIEDxxx label with the next sequential build number. (VSS only)
b. The XML output files are gathered from each step using the File Merge Task and output as an xml file in the log directory specified in the element.
5. CCNet sends out email based on the elements in ccnet.config (Optional).
a. If is set, then the individuals will only receive email if the status of the build changes (Success -> Fail, or Fail -> Success)
b. If is set, then the individuals will receive email for every build.
6. CCTray displays current status of the build in the client system tray. The user can use the "Launch web page" menu item to browse to the build status website.
7. Project Dashboard enables multiple continuous integration projects to be viewed.
Contents related to 'CruiseControl and CruiseControl.Net (CCNet)'
Continuous Integration: Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day.
TeamCity: TeamCity is a closed source, Java-based build management and continuous integration server from JetBrains.