Build,Test, Deploy from Code to
CustomerAlex Manly & Oliver Ferrigni
Introducing Chef Delivery
Adopt a proven workflow to go more quickly
from idea to shipped software
High velocity with safety
Reliable and repeatable workflow
Visibility of who did what, and when
Shared Workflow
Delivery’s pipeline is shared across projects and teams
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases
APPROVE DELIVER
Lint
Syntax
Unit
Security
Quality
Publish
Lint
Syntax
Unit
Provision
Deploy
Smoke
Functional
Provision
Deploy
Smoke
Functional
Provision
Deploy
Smoke
Functional
Provision
Deploy
Smoke
Functional
Submit
Change
Does this
code change
look good?
Do we want
to ship this?
Delivery Phases
Verify and Build
Build
Acceptance, Union, Rehearsal, Delivered
Provision Deploy
Smoke Functional
Delivery Phases – Example Java Application
• JUnit
Verify and Build
Build
• Lint4J • javac
• Fortify • FindBugs • Maven
• Artifactory
Acceptance, Union, Rehearsal, Delivered
• EC2
• Chef Provisioning
Provision Deploy
• Load jar in
Tomcat
• Curl $URL; check
for 200 OK
Smoke Functional
• Selenium
• Cucumber
• Chef InSpec
Visualization of Change
Delivery’s dashboard summarizes all changes at a glance
Demonstration
Architecture
Deploy Automation
deploy.rb
TRIGGER DEPLOY
ON SELECTED INFRA
RUN DEPLOY PHASE
OF DELIVERED STAGE
FOR MYAPP PROJECT
API CALL
SSH
TRIGGER CHEF-CLIENT VIA PUSH
Delivered
Build Cookbook
• Each project has a build cookbook
• Build cookbooks can also be shared across projects
• Delivery project = build cookbook + project config + project code
├── recipes/
├── lint.rb
├── syntax.rb
└── unit.rb
Phase Execution
Delivery provides syntactic helpers for common tasks
log "Running unit tests"
repo = node['delivery_builder']['repo']
execute "run my junit tests" do
command "mvn test"
cwd repo
end
Chef Delivery

Chef Delivery

  • 1.
    Build,Test, Deploy fromCode to CustomerAlex Manly & Oliver Ferrigni
  • 2.
    Introducing Chef Delivery Adopta proven workflow to go more quickly from idea to shipped software High velocity with safety Reliable and repeatable workflow Visibility of who did what, and when
  • 3.
    Shared Workflow Delivery’s pipelineis shared across projects and teams
  • 4.
    Unified Pipeline Shape Thestages are fixed, and each stage has a fixed set of phases APPROVE DELIVER Lint Syntax Unit Security Quality Publish Lint Syntax Unit Provision Deploy Smoke Functional Provision Deploy Smoke Functional Provision Deploy Smoke Functional Provision Deploy Smoke Functional Submit Change Does this code change look good? Do we want to ship this?
  • 5.
    Delivery Phases Verify andBuild Build Acceptance, Union, Rehearsal, Delivered Provision Deploy Smoke Functional
  • 6.
    Delivery Phases –Example Java Application • JUnit Verify and Build Build • Lint4J • javac • Fortify • FindBugs • Maven • Artifactory Acceptance, Union, Rehearsal, Delivered • EC2 • Chef Provisioning Provision Deploy • Load jar in Tomcat • Curl $URL; check for 200 OK Smoke Functional • Selenium • Cucumber • Chef InSpec
  • 7.
    Visualization of Change Delivery’sdashboard summarizes all changes at a glance
  • 8.
  • 9.
  • 10.
    Deploy Automation deploy.rb TRIGGER DEPLOY ONSELECTED INFRA RUN DEPLOY PHASE OF DELIVERED STAGE FOR MYAPP PROJECT API CALL SSH TRIGGER CHEF-CLIENT VIA PUSH Delivered
  • 11.
    Build Cookbook • Eachproject has a build cookbook • Build cookbooks can also be shared across projects • Delivery project = build cookbook + project config + project code ├── recipes/ ├── lint.rb ├── syntax.rb └── unit.rb
  • 12.
    Phase Execution Delivery providessyntactic helpers for common tasks log "Running unit tests" repo = node['delivery_builder']['repo'] execute "run my junit tests" do command "mvn test" cwd repo end