Here’s the story of an automated .NET deployment. Story is strongly based on my current project. To give you some context, here are few facts about the project:

  • dozen web applications (half of which to be installed only on test environments)
  • more than dozen console applications doing various things (reporting, mailing, etc.)
  • four environments (DEV, TEST, DR and PROD), up to 4 machines each

While it certainly is not the biggest .NET project, it for sure calls for automated deployment procedures. The previous tedious manual process was taking up to 8 hours to complete and, needless to say, was failing quite often due to deployment notes not being up to date.

I started automating the process a few months ago, but at first I was struggling with each and every step. The breakthrough came with reading the awesome Continuous Delivery book by Jez Humble ad David Farley.

This is the first post in the (hopefully) long series. It is mean to give you an outline of the process we implemented. As time passes, it will fill with links to posts covering specific areas. So, here’s the sketch

  1. Compile the source code (nothing fancy here)
  2. Run the commit stage tests (mainly unit tests)
  3. Build and digitally sign the deployment package
  4. Put the package in the build drop folder (again, nothing fancy)
  5. Create a new Release Candidate in the release repository
  6. Get the latest Release Candidate which passed commit stage tests
  7. Start the deployment based on description of the environment (what to install where)
  8. Upload the deployment package to target machine(s)
  9. Validate the authenticity of package with public key of the publisher
  10. Stop all running applications (both web and console hosted by Windows Scheduler)
  11. (Re)create the applications and application pools on IIS
  12. Update the binaries to new version
  13. Start the web applications and schedule console applications
  14. Verify the correctness of deployment
  15. Run the integration and automated user acceptance tests
  16. Update the status of Release Candidate reflecting the outcome of the tests
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)