views:

360

answers:

2

Is it possible to use CruiseControl.Net to set up a build farm? We currently have 4 different build machines building different things at different times and have a bit of a headache to manually balance the load somehow. I would prefer to designate one of them to be the master build machine, which would delegate work to the other ones when they are free.

+2  A: 

As far as I can determine, there is no support in CruiseControl.Net for build farms - at least not operating the way you describe. CCNet's interpretation of "farm" seems to assume that projects are assigned manually to a machine and a given project will always be built on the same machine.

If you wanted to dynamically select which machine actually performs the build, you would need to create your own mechanism to select that machine and trigger the build on it. There is likely to be quite a bit of complexity associated with this. For instance you would probably need to ensure that the same project does not get built simultaneously on two different machines if a second commit occurs while the previous commit is still being processed.

If there is a shared location that all the build machines can access, it may be possible to use the Filesystem source control block or CCNet's ForceBuild mechanism to start the build on the designated machine, but have all the build machines publish their output for a given project to the same final location.

Richard J Foster
I was just reminded about JetBrains TeamCity. I believe this does support build farms in the way you describe, and the Professional edition supports up to three "Build Agents" (machines) and 20 "Build Configurations" (which I read as projects) for free. If that sounds interesting, please see http://www.jetbrains.com/teamcity/buy/buy.jsp#professional for their sales pitch.I have not used TeamCity, and cannot comment about how well it works but my experience with JetBrains products has been generally positive.
Richard J Foster
I went for Team City eventually - strongly recommended. Its 20 years of development better than CCNet. I would say that CCNet will never catch up.
Grzenio
+2  A: 

See load-Balancing the Build Farm with CruiseControl.NET blogpost for a possible solution

FkYkko