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

Continuous Delivery at GitHub

Continuous Delivery at GitHub

Continuous Delivery (CD) is the practice of building software that is ready to be deployed to production at all times. CD requires a stable, automated build pipeline, with simple, push button deployments, guided by feedback and metrics on the health of the production system. By refining and shortening feedback loops throughout the entire software process, it is possible to continually be delivering high-quality, working software to happy customers. At GitHub, we deploy hundreds of times in the course of an average day. We practice continuous delivery from design, development and ops, through our release processes and into customer support. This talk will cover many of the techniques and tools we use for continuous delivery at GitHub, including pull requests, feature toggles, chat ops and continuous integration and deployment. We will also discuss core principles so you can apply these lessons in your own team, process, and business.

Shay Frendt

June 17, 2014
Tweet

Other Decks in Programming

Transcript

  1. “Our highest priority is to satisfy the customer through early

    and continuous delivery of valuable software.” http://agilemanifesto.org/principles.html Principles behind the Agile Manifesto
  2. ! ! We want to make it easier to work

    together than to work alone.
  3. Build a demo of the feature Ship it to staff

    Get feedback Ship it to all users
  4. <% if logged_in? && && current_user.conversation_locking_enabled? && issue.repository.writable_by?(current_user) %>! <%!

    type = issue.pull_request? ? "pull request" : "issue"! verb = issue.locked? ? "unlock" : "lock"! next_state = (verb == "unlock" ? "lock" : "unlock")! %>! ! <div class="discussion-sidebar-item lock-toggle">! <a href="#lock-confirmation" rel="facebox" class="lock-toggle-link">! <% if verb == "lock" %>! <span class="octicon octicon-lock"></span>! <% else %>! <span class="octicon octicon-key"></span>! <% end %>! <%= verb.capitalize %> <%= type %>! </a>! </div>! <% end %>!
  5. class User! module FeatureFlagMethods! ! def preview_features?! GitHub.preview_features_enabled? && staff?!

    end! ! # Issue locking! def conversation_locking_enabled?! preview_features?! end! ! end! end!
  6. Build a demo of the feature Ship it to staff

    Get feedback Ship it to all users
  7. Tools that help you progress, and see progress ‣Version control

    ‣Automated test suite ‣Continuous integration ‣Group chat and ChatOps ‣Staging, QA, Production-like environments ‣Exception tracking ‣Metrics collection
  8. Build a demo of the feature Ship it to staff

    Get feedback Ship it to all users