Yes, in Ruby land we have Capistrano, which has "recipes" for executing shell scripts on your servers.
A typical recipe for deployment could to the following:
- check out the latest version of the source code on your production server
- have the web server direct all requests to a "upgrade in process" page
- take the app server offline
- point the current version to the latest version that you just checked out
- update the database
- restart the app server
- "ping" the app server to make sure the cache is primed
- point the web server at the app server
If anything goes wrong, it knows how to rollback to the previous version.
It's aimed at Ruby developers, but you could use it for any kind of Unix based deployment.
Also, whenever I check in source code to the server, the server automatically runs my tests, and sends me an email if any of them fail.
The Ruby/Rails community is fanatical about automating things. E.g. there are also recipes for turning a clean Ubuntu install into a Rails server with Apache, Mysql, source control, etc.