I'm looking for some guidelines on what would be a best practice build system to allow automated deploys from subversion code to remote websites.
Currently I run a test and production branch for each environment for 3 apps:
- PHP application
- ASP.NET MVC app
- ASP.NET web service
I deploy the ASP.NET apps via Web Deploy from Visual Studio and the PHP app from WebMatrix. It's better than nothing but still requires I load Visual Studio or WebMatrix and the application to do a deploy and I've found deploys from WebMatrix somewhat unreliable with some files missing after a deploy.
Ideally I'd like something that:
- will check out the appropriate branch from Subversion
- runs a build if necessary
- deploys to a remote IIS server
- allows rollbacks to previous copies of the code
- has a web interface or can be run with a single CLI command (i.e. one click deploy)
- has some file management capability to move files, create shortcuts, write to files, etc. (remotely)
- can run SQL scripts if necessary
- is open source or free to use
I'm not sure if I should using TeamCity (Professional), writing a MSBuild script, writing a WebDeploy script, or what. I'd probably run it on a build server.
You can use TeamCity for it or a custom MSBuild script scheduled in normal Windows scheduler. One way or another, you will need to customize MSBuild script. You can then use it in TeamCity.
Personally, I would go with TeamCity. Using custom build tasks should allow you to do everything you want. TeamCity is free for commercial and non-commercial use.