3

Is there a known solution for splitting build process cross the network machines?

Use case:

We are an average software development company. We own around 50 development workstations (Quad Core 2.66Ghz, 4 GB ram, 200 GB raid). No need to tell that at any single moment not every machine is loaded to the max.

There are 5 to 15 projects running simultaneously at any single moment. Obviously all of them are continuously build on server, than deployed to proper environment. Single project build is taking from 3 to 15 minutes.

The problem: Whenever we build 5 projects in a row the last project is going to be ready after around 25 - 50 minutes. Building in parallel does not solve the problem (build is only a part of the game, than you need to deploy, run tests etc.)

YES the correct solution is to add another build server, but "That involves buying new Expensive hardware, and we already spent a lot!". Yea, right(damn them)!

Anyway. What about splitting build among developers workstation? Lets say whenever we need to build project "A" we check 5 workstations and start build on all that are not overloaded. The build can be canceled by a developer if he really needs all the power of his machine as long as there is at least 1 machine that is still building. After build is finished deployment can be performed to a proper environment (hosted on some server, not on workstation :) ). The bigger the company the more this makes sense to me.

Anyone tried something like this? Are there any good practices? Any helpful software?

(90% of the projects are .net C#, platform - Windows)

James
  • 7,643
  • 2
  • 24
  • 33
Dandikas
  • 133
  • 6

1 Answers1

3

Generally switching to a distributed build environment means changing the build chain, as you don't want to use different compilers in development and production.

That you mention games makes me assume that you are on VS and use windows, but I will offer some general recommendations

I know there are many other solutions (some more listed here http://wiki.gridengine.info/wiki/index.php/Distributed-Compilation) around, but without knowing more about your environment and requirements it's hard to give you a better recommendation than having a look at the various systems, see how well they fit your current environment and pick one.

By the way, when you are at 50 developers your company has probably reached the size where creating a distributed build environment can be motivated simply from improved developer productivity. Management typically doesn't like developers slacking off while waiting for the build servers... ;)

pehrs
  • 8,789
  • 1
  • 30
  • 46
  • 1
    Thanx a lot for the info. I updated the question with platform info, but you guessed it anyway. Do you have any experience using solutions from xoreax.com or electric-cloud.com ? They look like an investment worth trying. As to management. Darn I wish it was all that straight forward! "You need to wait 4 a build!? What!!! Here are 10 more tasks 4 u, that can be done while waiting!" Anyway, I know you are right, but now I'm on "If first you don't succeed, quit it!" side when it comes to "explaining the benefits of new ways". So I investigate 300% more before doing so. – Dandikas Mar 31 '10 at 14:05
  • 1
    I have not tried ElectricAccelerator, just seen it once and heard others refer to it with good words. IncrediBuild I have used. It has a few flaws, but it typically does what it says on the box. I don't know how well it supports C#. It certainly supports c/c++. – pehrs Mar 31 '10 at 14:32
  • (disclaimer - I'm the architect of ElectricAccelerator) With ElectricAccelerator you can use the same tool chain, it will even distribute many of them to the cluster so you need not have installed them on the worker nodes. ElectricAccelerator is compatible with the latest versions of VS too. You can get a 30 day eval of ElectricAccelerator Developer Edition here http://www.electric-cloud.com/products/electricaccelerator-dev.php – Eric Melski Nov 06 '11 at 00:44