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

Delivery with Chef

Delivery with Chef

Presented at ChefConf 2015

In this talk we'll discuss our experience building a continuous delivery solution at Chef, describe the philosophy behind the workflow we encoded, and share a demo of the results of our efforts.

Seth Falcon

April 01, 2015
Tweet

More Decks by Seth Falcon

Other Decks in Programming

Transcript

  1. WORRY ABOUT BUILDING THE WRONG THING TALK TO CUSTOMERS THINGS

    WE DID NOT DO WHEN BUILDING ERCHEF THING WE ARE DOING WHILE BUILDING DELIVERY
  2. STABLE WORKFLOW Steps Create a new change 1 Test Change

    Locally 2 Verification Tests Submit Change 3 Review Change 4 Build Artifacts Acceptance Tests Approve Change 5 Release Process Deliver Change 6 manual automated
  3. THE STAGES ARE FIXED EACH STAGE HAS A FIXED SET

    OF PHASES A UNIFIED PIPELINE SHAPE
  4. DELIVERY PIPELINE Steps manual automated Verify Lint Syntax Unit Build

    Merge Lint Syntax Unit Quality Security Publish Provision Deploy Smoke Functional Acceptance Union Provision Deploy Smoke Functional Rehearsal Provision Deploy Smoke Functional Delivered Provision Deploy Smoke Functional Stages customizable Verify Build Acceptance Union Rehearsal Delivered Submit Change 3 Review Change 4 Approve Change 5 Deliver Change 6 Chef Delivery Create a new change 1 Test Change Locally 2 Workstation
  5. OUR DEMO PLAN 1. Propose a change to motd 2.

    Review acceptance; then hit Deliver 3. See how Union is affected 4. Propose a change to simple-web, see that we get latest motd in acceptance
  6. THAT MOMENT WHEN we felt what it feels like to

    be ready, flexible, and swift
  7. Adam Jacob Oliver Ferrigni Alex Ethier Salim Afiune Chrostopher Maier

    Scott Christopherson Jean Rouge Seth Falcon Jon Anderson Shelton Davis Jon Morrow Tom Duffield Mark Dennard Jon Morrow TEAM
  8. HOW IT WORKS CLI Web Browser Job Dispatch Push Chef

    Server erlang Delivery erlang pgSQL DB git SCM Build Node Build Node Build Nodes