I have answered a question on DB deployment strategies.
There is also a question on code deployment.
Where I work we are working on a fairly large Drupal deployment. We have roughly the following setup.
All developers have a local sandbox (Drupal + DB). The commit code to a branch that is shared among all of the other developers (there are around 15 of us). This includes configuration changes which are performed by update functions.
When developers do a svn up, they also run update.php to perform any configuration changes locally.
We have a sprint testing system which runs simpletest and can be used for user testing.
At the end of a sprint (we use scrum), we merge the branch into trunk, and run tests on this.
We then tag this as a release and deploy it to live (using Capistrano), finally run update.php on live to apply configuration changes to live.
Any emergency fixes get deployed from trunk to live as a dot release 7.1 etc.
If you want any more detail then please leave a comment.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…