Multiproject Support

One of the nicer (and newer) features of CruiseControl is support for multiple projects. There are two aspects to this: support for multiple projects within a CruiseControl server instance (i.e., in the configuration file), and support for multiple projects within the Web app. By defining multiple projects within a single CruiseControl instance, you are explicitly catering for a single server building two or more projects. While there is a limit on how many actively developed projects a CruiseControl instance can effectively manage, this solution works very well for projects with relatively low activity (such as projects in "maintenance" mode).

Java Start Sidebar
Resource Management

A single CruiseControl instance cannot effectively serve a large number of active projects because it can build only one at a time. Consequently, the amount of time that developers will have to wait before a build result is increased, possibly quite significantly. This issue can be addressed somewhat by having multiple instances per machine, but resource limits on the server will still pose a hard limit. It is difficult, for example, for even a four-CPU server to build eight projects concurrently. Nor will the addition of multiple build threads to CruiseControl address this issue. The solution will be a distributed build system—far from an easy task.

Java End Sidebar

One nice feature of defining multiple projects in the one configuration file is to be able to have builds of one project trigger other builds, via the BuildStatus source control component. This approach allows projects to be updated when common components change, promoting reuse between projects and a core set of common code. The CruiseControl reporting service provides support for multiple projects as well. As noted in the installation section, the Web app is provided with a path to a log directory, minus the project name. This is because the Web app assumes that all the directories beneath the log directory are distinct projects. The Web app provides a nice summary page so that the state of all the projects can be seen at a glance

If you have multiple CruiseControl services, there is no reason why they cannot save their log files into the same base directory. This allows you to use one Web app to report on multiple CruiseControl services. You can even have the CruiseControl services on different machines; they just need to be able to publish their logs back to the reporting server.