Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous Delivery at GitHub

Avatar for Rob Sanheim Rob Sanheim
September 18, 2014

Continuous Delivery at GitHub

Avatar for Rob Sanheim

Rob Sanheim

September 18, 2014
Tweet

Other Decks in Programming

Transcript

  1. !

  2. Releases over one year Release 1 Build Test Deploy Bugs

    Change Requests Release 2 Build Test, Perf, Scaling Deploy Support Requests Complaints QA Revenue $$
  3. Releases over half a year Build Deploy Bugs Issues Team

    Feedback Build & Scale Deploy Bugs Perf Staff Feedback Build Deploy Bugs Genpop Feedback Polish Deploy Bugs Genpop Feedback Polish Deploy Profit - Done!
  4. ! SLOC! ! ! ! Directory! ! 60995 test/models! 34526

    test/integration! 31106 test/controllers! 25339 test/lib! 12440 test/view_models! 1423 test/jobs! 1029 test/mailers! ! ! ! ruby test loc: 167k! ruby app loc: 158k! ! test / app ratio: 1.06! ! ! generated using David A. Wheeler's 'SLOCCount'
  5. !

  6. ! ! ! $ RAILS3=true script/bootstrap Bootstrapping the Rails 3

    gem environment… ! $ script/bootstrap Bootstrapping the Rails 2 gem environment…
  7. ! source "https://rubygems.org" ! def rails3? ENV["RAILS3"] end ! if

    rails3? gem "rails", "3.0.20.github11" else gem "rails", "2.3.14.github50" gem "actionmailer", "2.3.14.github50" gem "actionpack", "2.3.14.github50" gem "activerecord", "2.3.14.github50" gem "activesupport", "2.3.14.github50" end ! gem "will_paginate", rails3? ? "3.0.3" : "2.3.9.github"
  8. ! ! # Disable plugins on Rails 3 GitHub.only_on_rails_3 do

    config.plugins = [] end ! # Rails 2 needs the session to be configured before initializing GitHub.only_on_rails_2 do require_relative "initializers/session_store" end
  9. ! require "dat/science" ! class User include Dat::Science ! def

    can_read?(model) science "user-can-read" do |e| e.context :caller => caller, :login => login e.enabled { self.id % 3 == 0 } e.control { model.readable_by?(user) } # old way e.candidate { self.can?(:read, model) } # new way end end end
  10. !

  11. ! /deploy github/my-feature to production /deploy github/my-feature to branch-lab /deploy

    github/my-feature to production/fe1,fe2,fe3 /deploy github to production /ci build github/master /queue me for github
  12. !