(Related to ticket #224.) The current plan (subject to change based on any new information or experience): * The server runs on [http://aws.amazon.com/ec2/ Amazon EC2]. * The server has Windows Server 2003, VC++ 2008, SVN, Perl, and nothing else installed. * The server has a persistent disk with the SVN checkout. * On startup, the server runs a script. The script updates SVN, builds, saves the log output somewhere, and if it was successful then it commits the new binaries. * Some other server runs some kind of script that provides an authenticated web interface to (re)start the build server, and terminates it after some period of time when it's done. == Virtual machine image installation == * Start with basic Win2003 image (ami-e3698d8a, Server2003r2-i386-Win-v1.02.manifest.xml), on a Small Instance in the US region. * Attach a 2GB [http://aws.amazon.com/ebs/ EBS] disk. * Install [http://www.microsoft.com/express/download/ VC++ 2008 Express SP1]. * Install [http://www.sliksvn.com/en/download command-line SVN] 1.5.4. * `svn co http://svn.wildfiregames.com/svn/ps/trunk/ e:\svn` * Add some script or something into `HKLM\Software\Microsoft\Windows\CurrentVersion\Run`. * ... * Bundle the machine into s3://...something.../...something... == Build script == Does something like: * `svn up` * `premake --target vs2008 --outpath e:\build` * (TODO: build Collada, Atlas too?) * `vcbuild /time /showenv /useenv /M4 /r /logfile:buildlog.txt pyrogenesis.sln "Release|Win32"` * (TODO: have to think about tests - should they be compiled? should they be run? what should happen if they fail?) * Upload build logs to a public S3 bucket (because that's an easy web-accessible hosting service). * `svn commit -m 'Automated build.'` * Safely unmount the EBS disk. * Call [http://docs.amazonwebservices.com/AWSEC2/2008-12-01/DeveloperGuide/index.html?ApiReference-Query-TerminateInstances.html TerminateInstances] to stop the machine. Also need to run something external to call !TerminateInstances after a suitable timeout, in case the machine gets stuck, so it doesn't end up wasting lots of money. == Build runner == * Runs on same server as SVN. * Uses SVN auth info to only allow registered developers to trigger builds (because they cost money). == EC2 == Currently (December 2008) the only suitable alternatives to EC2 seem to be [http://www.flexiscale.com/ FlexiScale] and [http://www.gogrid.com/ GoGrid], but they are a bit more expensive. Since all the services provide a plain Windows environment, it should be fairly easy to transition between the services if it becomes necessary.