I've been using TeamCity for a few years now and highly recommend it. You can do things like hook it into your unit tests and configure it to only build if those tests pass. You can also set it up to automatically build when you push commits to your source control (I recommend doing that for your staging environment and then setting up a more explicit deployment process for your production).