I'm just working on a deployment process for the company I'm contracting with, and recommending steps that they should take before deploying software and database updates on their production systems. So I thought I'd ask the people I trust most with this sort of thing, to make sure I haven't missed out anything crucial. So... What are the steps in your deployment process?
First, put all the code into source control, including the database. Then, all deployments come from labeled/versioned code within the source control system. That way you know exactly what you're deploying, what has been deployed, what got changed, when, why, how, by who... etc. After that, it depends on the system we're deploying to what mechanisms are used. Total automation for continuous integration systems, mostly automated for Dev & QA, not terribly automated for production. Since I've got a couple of chapters in a book coming out shortly on this topic, I'm not going to rewrite everything here. Let's talk production deployments. Have a copy of production. This can be a QA environment or a Staging environment, either way. Just make sure that you have a mechanism in place to ensure that it's an exact copy of the code (not necessarily the data) of the production system. Then, you develop a deployment script (or scripts) that will successfully deploy the database. You need to ensure that these scripts run without error. If there is an error, reset the Staging system to be a copy of production, fix the script, rerun it. Once the script runs without flaw, you can then take that script and run it against production. BUT, before you do, best to either take a backup, or a snapshot, of the production system, always. Then, wthout editing what was run in Staging, run it in production.