Search code examples
buildbuild-processbuild-automation

How do you get up and running with a build server?


I think everyone here would agree that in order to be considered a professional software house there are number fundamental things you must have in place.

There is no doubt that one of these things is a build server, the question is, how far do you need to go.

  • What are the minimum requirements for the build server? (Somewhere to just compile?)
  • What is the ultimate goal for your build server? (Scheduled, source control integration, auto deployment to test / live servers)
  • Where is a good place to start assuming you have nothing at the moment?

It would be great if we could list out a few simple tasks that an amateur developer could take on board in order to set them on the right track to a fully functional build server.

It would also be good to hear about people that feel they have a "complete" system setup that performs all the functionality they require and how they went about setting it all up from scratch.


Solution

  • You can start by looking into Cruise Control.

    There's also CruiseControl.net if that's your poison.

    Essentially though, you need the following ingredients:

    • A dedicated environment (Virtual Machine/server. Don't use a developer's machine, unless it's just you. Even then, run a VM if you can. Much easier to move it to a server when/if one becomes available in your organisation)
    • A source control system that supports labelled/tagged revisions (for example, Subversion+TortoiseSVN)
    • Build scripts. These can be batchfiles that start the devenv.exe or msbuild.exe applications with a command line, or you can use something like Ant or NAnt.

    In this scenario, CruiseControl acts as the Continous Integration server, and can make sure that you have builds done as you check in your code. This means you know whether the build is broken quicker than if you just had nightly builds. You should probably also have nightly builds, though.