Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Deploying Rails at SeeClickFix


Published on

This is a presentation I gave describing how we do continuous deployments at SeeClickFix.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Deploying Rails at SeeClickFix

  1. 1. SeeClickF Deploying Rails
  2. 2. When you’re deploying multiple times a day, it needs to be reliable and trusted SeeClickF …remove the human from the process.
  3. 3. SeeClickF Existing Solutions
  4. 4. SeeClickF Never roll your own solution Until you’ve felt the Pain
  5. 5. Capistrano’s Deploy Model • • • • • • Requires developer ssh access Requires reliable connection between developer and servers sudo is probably involved in some way ssh key forwarding is also probably involved Slow deploys hold up developers Deploys are conducted by humans Doesn’t scale SeeClickF •
  6. 6. SeeClickF Something’s wrong when the solution is more complicated than the problem it’s trying to solve
  7. 7. Deploys at SeeClickFix • • • • • ssh or network access not required dev’s console is not held up deploying Scales well No complicated setup or configuration. We can all git push Deploys via the “merge” button master branch is always production SeeClickF •
  8. 8. App Servers Display Build Info /builds/info - Shows current state SeeClickF /builds/log - Shows deploy log
  9. 9. Chef Builds the App Server { 1. Add a server to chef 2. It builds itself 3. It pulls from github and deploys itself SeeClickF "exceptional_api_key": "", "rails_env": "production", "db": "scf_productio", "port": "3000", "service_roles": { "deploy_notifier": "", "integration_syncr": "", "migrator": "", "cron_runner": "", "queue_hosts": "" }, "install_location": "/var/www/seeclickfix_prod", "repo": "ssh://", "branch": "master", "unicorn": { "nprocs": "4" }
  10. 10. How code gets to Prod SeeClickF 1. devs merge to develop 2. develop deploys to 3. Travis CI tests develop 4. If CI passes, Travis merges tested sha to master 5. master deploys to
  11. 11. CI really deploys to Prod CI’s job queue acts like the deploy queue. • Deploys can be skipped using the [ci skip] tag. SeeClickF •
  12. 12. SeeClickF SeeClickFix is Hiring!