As Flowdock enters public beta (opens on March 10th!) we’ve begun doing continuous deployment. As an agile software development shop, we also test extensively and practice continuous integration. At the same time we need to monitor that Flowdock is running smoothly and when problems occur, we can fix them right away. All this requires fast working channels of communication so in the center of it as the hub of our team, is naturally Flowdock. I’ll walk you through our development process from the developer’s point of view.
We use git for version control. Each time someone pushes commits to a branch, an email is sent to Flowdock with tagged information on
- commits that were pushed (committer, commit message…)
- component and branch, into which was pushed
This lets us do real-time code reviews. We habitually discuss individual commits inside Flowdock. We use a git post-receive hook to pipe the changes into Flowdock via email. The hook is available here as a gist on GitHub.
Whenever someone pushes some changes into the master branch, our continuous integration server runs all the unit tests in the project and if they do not pass, an alerting email, such as the one above, is sent to our flow. The message comes with details on who to blame so others can target the correct amount of mocking towards the culprit.
When the tests pass, the master branch is then deployed to our QA environment. All deployments send properly tagged messages to our flow in Flowdock. I can always tell what was deployed:
- component: front end, back end, specific service…
- environment: production, qa…
- changes: log of commits the deployment brings into the environment
The QA deployment runs acceptance tests, which make sure all the important use cases function properly in a production-like environment. For acceptance tests, we use a combination of Cucumber, Selenium and RSpec. Once everything passes in QA, the deployed version is tagged a suitable candidate for production deployment. Next we do some smoke testing in QA, and finally deploy to production.
Flowdock also gives me a deployment log. For example to see front end deployments in production, I just search #deploy #production #frontend in Flowser.
Whenever something goes wrong in production, we get notifications to our flow. This way we can debug problems together, immediately when they occur.