I\'m currently experimenting with build script, and since I have an ASP.net Web Part under source control, my build script should do that at the end:
VirtualBox also has API's for automating their VM's.
With VMWare, there is the Virtual Machine Automation APIs (VIX API). You can find the reference guide here. It works with VMWare Server and WorkStation, but AFAIK it's not available for ESX Server.
From the main page for VIX:
The VIX API allows you to write scripts and programs that automate virtual machine operations. The API is high-level, easy to use, and practical for both script writers and application programmers. It runs on VMware Server and Workstation products, both Windows and Linux. Bindings are provided for C, Perl, and COM (Visual Basic, VBscript, C#).
Use https://github.com/dblock/vmwaretasks rather than the raw VixCOM API if you're going to do this in C#.
I agree with Chris. Virtual Machine Automation APIs is a very good possibility for automating of virtual machine operations. VIX API Version 1.6.2 can be used for automating of ESX guest operations as well.
To follow-up to @Chris, ESX is extremely scriptable. A client I've been working with recently has built a web service that launches a VMware script to create the VM they need, then start the VM with a custom boot ISO. That ISO includes all the kickstart or unattend.txt info it needs to do a totally unassisted OS build.