I have an application consisting of an ASP.NET web application, a couple of Windows services, and a SQL Server 2005 database. This application is replicated at several sites, so that each site has a server containing all parts (web app, services, & DB). Currently the process for deploying updates is this:
Database
- Script database changes (using Generate Scripts in Management Studio).
- Connect to a site's DB in Management Studio.
- Run SQL script on site's DB.
- Repeat 2 & 3 for each site.
Web Application
- Use Publish in Visual Studio.
- Delete web.config from published copy.
- Zip web application files.
- Copy zip file to a site.
- Remote desktop into that site to unzip files.
- Manually modify web.config when necessary.
- Repeat 4-6 for each site.
Windows Services
- Build project in Visual Studio.
- Zip rebuilt binaries.
- Copy zip file to a site.
- Remote desktop into that site.
- Stop the service.
- Uninstall the old version.
- Install the new version.
- Manually modify the .config when necessary.
- Start the service.
- Repeat 3-9 for each site.
Currently there are 3 sites and deployments are annoying but manageable, however within the year we will most likely have 10 or 11 sites and having to deploy updates this way would make me suicidal.
So, I am looking for suggestions on how to automate this process. I have started looking into learning MSBuild for merging configurations and copying files out to my servers, but I'm not sure how far it will take me. Thanks.