# How should I set up UDK with Git and CruiseControl?

For a new project in UDK, I'd like to set up a Git repository for version control and a CruiseControl.NET-based continuous integration solution. The good news is that he first part seems easy enough and CruiseControl.NET can work off Git repositories. The bad news is that according to my searches, nobody has ever tried to do this.

Ideally, I'm looking for a step-by-step guide on how to set up such a development environment assuming more than one development computer, one central repository for the "master" branch, and one machine for building and packaging the binaries via CruiseControl.NET.

Related:

• In order to make your question clearer, you could edit out mentioning Git. Your question seems to be how to set up UDK with continuous integration, specifically CruiseControl.NET, and there's a lot of extra in the question title and text. – Ricket Oct 23 '12 at 17:06
• @Ricket: Kind of ... CI doesn't make much sense without version control, so it's important to have one there, though not terribly important which one specifically. Git is just a good target, since it's a very common distributed VC system (and for the same reasons I picked CruiseControl). The idea is to have a "quick start guide" as an answer so others can reference it and either use it as-is, or modify it to suit their VC or CI solutions instead. – Martin Sojka Oct 23 '12 at 17:54
• CruiseControl.NET is pretty old. I would go with something better and newer, like TeamCity (if it's free for you), Hudson, et. all – ashes999 Oct 23 '12 at 18:24
• @MartinSojka Quick start guides often indicate that the question is either too localized (how do I set up an environment with X and Y connected to Z and...) or multiple questions (should be broken into one question per question). It would be best if you stuck to one specific topic. If you need help setting up CruiseControl.NET with Git, ask that in Stack Overflow. If you need help checking UDK into Git, ask that in a different question (it'd be closed as duplicate, clearly). Your question here is how to set up continuous integration on a UDK project, i.e. how to automate building it. Right? – Ricket Oct 23 '12 at 20:38
• @Ricket: Pretty much, yes. How to set up the development environment so that multiple people can work on an UDK project and it gets build (& tested, if possible, at least for "does it start?") whenever any of them updates the "master" or "stable" branch. – Martin Sojka Oct 23 '12 at 21:06

In order to set up continuous integration (e.g. CruiseControl.NET) with a project, you need to be able to build the project from the command line.

Alternatively use the command line UDK make in the Binaries\Win32 directory.

So, it looks like you could set up your CruiseControl.NET server to execute the "UDK make" command and parse the output for success or failure (and package/archive the binaries, and any other post-processing).

It's possible to setup a continuous integration system with a batch script. See this build.bat file that is used for one of my own projects. The script is triggered by a post-commit hook in the master git repository.

call Binaries\Win32\UDK.com make -full -unattended -stripsource -nullrhi
call Binaries\Win32\UDK.com CookPackages -full -platform=PC -nullrhi
call Binaries\UnSetup.exe -GameCreateManifest
call Binaries\UnSetup.exe -BuildGameInstaller


This does a complete build and outputs to a zip file in the project root. It includes all the game files that would normally be extracted by the installer generated by UnrealFrontend.

Note that to install UDK on a server, the server has to have DirectX installed, and the UDK installer has to be run with the -progressonly argument. See this blog post for details.