Code, Test, Deploy

19d03ecc1ff5da1a5e63a3ddaa2d84c2?s=47 Ben Balter
August 20, 2014

Code, Test, Deploy

How to Ship Software Like a Startup

19d03ecc1ff5da1a5e63a3ddaa2d84c2?s=128

Ben Balter

August 20, 2014
Tweet

Transcript

  1. ! Code, Test, Deploy How to Ship Software Like a

    Startup Ben Balter government.github.com government@github.com
  2. ! What’s GitHub?

  3. ! The world’s largest code-sharing platform " Founded 2008 !

    VC Funded $100M # Hubbers 232 $ Users 7M % Projects 15M
  4. ! In your datacenter, or in the cloud & GitHub.com

    (SaaS) Public engagement
 github.com/ngageoint '
 GitHub Enterprise (VM) Internal collaboration
 enterprise.github.com
  5. ! The constraints of open source

  6. ! " Electronic High fidelity mediums expose process

  7. ! ( Transparent Communicate decisions in realtime, and forever

  8. ! ) Asynchronous Focus workflow on code, not meetings

  9. ! * Informal Adopt cultures, not polices

  10. ! + Code

  11. ! , Git * 2d96cfe - (HEAD, tag: v3.1.1, origin/master,

    origin/HEAD, master) :gem: bump (43 minutes ago) <Ben Balter> * f4b446b - remove stray backtick (44 minutes ago) <Ben Balter> * 83599e3 - Merge branch 'master' of https://github.com/benbalter/g-man (46 minutes ago) <Ben Balter> |\ | * 42514ea - Merge pull request #61 from devscott/laxco (50 minutes ago) <Ben Balter> | |\ | | * 072d9b5 - Adding in additional entry for La Crosse County, WI (54 minutes ago) <Scott Sloan> | |/ * | 1e95d95 - remove unresolvable domains (46 minutes ago) <Ben Balter> * | 1a8645a - remove uwyo.edu/CES (86 minutes ago) <Ben Balter> |/ * 70410ba - Merge pull request #60 from jpmckinney/canada (2 hours ago) <Ben Balter> |\ | * a77ad43 - Use consistent comments for Canada hosts (2 hours ago) <James McKinney> | * 1776e45 - Add more Canadian hosts (2 hours ago) <James McKinney> * | 05211a0 - Merge pull request #58 from mitio/bulgarian-government-domains (3 hours ago) <Ben Balter> |\ \ | * | fe8f862 - Add Bulgaria's government main domain (3 hours ago) <Dimitar Dimitrov> | |/ * | 85d0c7b - Merge pull request #59 from mitio/fix-readme-typos (3 hours ago) <Ben Balter> |\ \ | |/ |/| | * f558a90 - Add missing word in the readme (3 hours ago) <Dimitar Dimitrov>
  12. None
  13. % Find your project

  14. - Prioritize tasks

  15. . Propose the change

  16. / Review

  17. 0 Discuss

  18. 1 Merge

  19. 2 Mentions

  20. ! 3 Friction Delay between “I want to contribute” and

    “I have contributed”
  21. None
  22. ! 4 Scripts to rule them all $ script/test Bootstrapping

    $ boxen giants $ cd ~/github/giants $ script/bootstrap Running $ script/server Testing
  23. ! 5 Test

  24. 6 Meet Hubot

  25. 7 ChatOps

  26. # Shared Command Line •View cameras in our datacenter •

    Search error logs • Manage and trigger alerts • Perform server maintenance • View load balancer status • Spin up cloud instances • Provision servers • Adjust firewall ports • Activate DDoS Mitigation • Restart processes • Configure DNS • Deploy to production
  27. Two other ways Hubot helps Push Notifications Situational Awareness

  28. 8 Continuous Integration (CI)

  29. 9 Build Status

  30. : On each push… •~1,500 test suits •~15,00 tests •~75,00

    assertions • x 2 environments (.com, Enterprise) •Tests > 20 seconds are considered a failure •~ 90 seconds to complete
  31. ! /Deploy

  32. ! Nothing gets deployed unless tests are green

  33. A typical deployment flow Development Staging Production

  34. GitHub's ; flow Development Staging Production Development Development Staging Staging

  35. , Branch Labs

  36. < Queuing

  37. ⚡ Doing it live

  38. Meanwhile, back at the pull request…

  39. ! Tools make the difference

  40. > A typical day at GitHub • 230 employees 


    (2/3rd remote) • 185 chatrooms • ~30,000 lines of text 
 (13,000 from Hubot) • ~500 images • 500+ deploys • 1000+ pushes • 320 issues opened •185 pull requests opened 
 (of which 145 merged that day)
  41. ~130 production deploys per day

  42. ~41 deploys to GitHub.com per day

  43. ! Code, Test, Deploy How to Ship Software Like a

    Startup Ben Balter government.github.com government@github.com