Big Time Continuous Deployment / Testing
The high level of our process is dead simple: Continuously integrate (commit early and often). On commit automatically run all tests. If the tests pass deploy to the cluster. If the deploy succeeds, repeat.
Our tests suite takes nine minutes to run (distributed across 30-40 machines). Our code pushes take another six minutes. Since these two steps are pipelined that means at peak we’re pushing a new revision of the code to the website every nine minutes. That’s 6 deploys an hour. Even at that pace we’re often batching multiple commits into a single test/push cycle. On average we deploy new code fifty times a day.
This is amazing stuff. This team commits and deploys constantly. They’re 100% reliant on their tests (and a cool sounding rollback system), which I find scary as hell but I would imagine it focuses them on writing good tests, for real. Very impressive. I wonder if they’re hiring… :)