Push Button Deployments

Envato is becoming a large company, with several teams working on many different products spread across various technology stacks.

Each of our teams are responsible for their own deployment process, which means each has ended up with its own way to deploy changes. It’s complicated to grant a new developer access to all the tools and services they need to deploy a single project, let alone multiple projects.

We have just finished one of our quarterly “hack weeks” here at Envato, where we take time out from our usual programme of work to spend time on solving new or interesting problems. Our team of 5 developers decided to try out Zendesk’s open source deployment tool Samson to improve our deployment process.

Rather than our current process of having each developer deploy from their local machine, using a centralised deployment tool has some benefits. You don’t need a complex set of permissions, nor have to add SSH keys to a bunch of servers to deploy – you simply need web access to Samson. Some further benefits:

  • Logins to Samson are authenticated via OAuth, from either Github or Google
  • Deploys are logged
  • Multiple users can view an ongoing deployment

Our deploy process now looks like this:

  1. A developer merges a pull request into the master branch in GitHub
  2. The merge triggers a build of the master branch in our CI service Buildkite
  3. Passing builds notify Samson to create a release
  4. Releases can be deployed by Samson by either the click of a button, or automatically
  5. Samson updates the status in the GitHub deployment API
Deployment flow

As a finishing touch for this project, we wanted to perform deploys by pushing a physical button. We got our hands on a wireless physical pushbutton which is connected to a given project, and pressing it triggers a deploy of that project’s latest pending release. Here is our CEO Collis eager to deploy a new feature. By a press of a button he now can. We’re actually going to get him to deploy this very blog post by pushing the button during our presentation.

Collis pushing the deploy button