It's custom code which pulls the latest commit when github hook hits the endpoint. It's... a few lines of code.
It's only me working on this so I run the tests before each push but I guess running the tests on the staging env will be like a few more lines of code. I s'pose at some point I'd want to keep test results and I'll need a build server. May be.
Forgot to say that I also deploy everything on heroku (for free) as a staging environment (before pushing to production).
heroku + mongolab + redis to go.
ah yes, and new relic for monitoring what's happening on live.