Only really obvious step you're missing is to run checkouts in Production ;)
If you have the application running on in a distributed environment, you may have to...
- Take box A out of load balancer, dns, etc.
- Move code to box A.
- Run Checkouts.
- Put Box A back into load balancer, dns, etc.
- Rinse Repeat.
EDIT w/ more details
Here's how we do it at Artie Ziffcorp. We put a change ticket in the change request log, inform Net Ops that we are doing a change (so they know that any errors on the monitoring tools are bogus), build team clean builds from repository moves, assets to box, biz checks out box, dev team does triage as necessary, recycle jvms/iis/your app server here. When the smoke clears put the box back in the dns/load balancer and call up Net Ops and tell them the change is done.
Party like your dev team just had a release. ;)
Most of our DB changes are already in place come release time, the views just point to different tables.
Id say on an average release, roster is about 2 engineers (to check out the production box), the dev team (usually 5-10), test team (2-5), build team (1 rep from that department), and 2-4 project managers/business types.
35k person company and about 10% of them are strictly IT.
Hope this provides better insight, it is by no means the only way to do a release.
Connecting Visuals to Gameplay (WARNING 7MEGS) Go to page 36. Talks about Valve's Shipping Machine!
[1]: http:// www.valvesoftware.com/publications/2008/MIGS08_ConnectingVisualsToGameplay.pdf