|Version 3 (modified by Philip, 4 years ago) (diff)|
(Related to ticket #224.)
The current plan (subject to change based on any new information or experience):
- The server runs on 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 EBS disk.
- Install VC++ 2008 Express SP1. (I think that includes the Platform SDK already?)
- Install 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.
- ...anything else?...
- Bundle the machine into s3://...something.../...something...
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 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.
- Runs on same server as SVN.
- Uses SVN auth info to only allow registered developers to trigger builds (because they cost money).
Currently (December 2008) the only suitable alternatives to EC2 seem to be FlexiScale and 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.