13
Build, Test, Deploy from Code to Customer Alex Manly & Oliver Ferrigni

Chef Delivery

  • Upload
    chef

  • View
    550

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Chef Delivery

Build, Test, Deploy from Code to CustomerAlex Manly & Oliver Ferrigni

Page 2: Chef Delivery

Introducing Chef Delivery

Adopt a proven workflow to go more quickly from idea to shipped software

High velocity with safetyReliable and repeatable workflow

Visibility of who did what, and when

Page 3: Chef Delivery

Shared WorkflowDelivery’s pipeline is shared across projects and teams

Page 4: Chef Delivery

Unified Pipeline ShapeThe stages are fixed, and each stage has a fixed set of phases

APPROVE DELIVER

LintSyntax

UnitSecurityQualityPublish

LintSyntax

Unit

ProvisionDeploySmoke

Functional

ProvisionDeploySmoke

Functional

ProvisionDeploySmoke

Functional

ProvisionDeploySmoke

Functional

Submit

Change

Does thiscode changelook good?

Do we wantto ship this?

Page 5: Chef Delivery

Delivery Phases

Verify and Build

Build

Acceptance, Union, Rehearsal, DeliveredProvision Deploy

Smoke Functional

Page 6: Chef Delivery

Delivery Phases – Example Java Application

• JUnit

Verify and Build

Build

• Lint4J • javac

• Fortify • FindBugs

• Maven• Artifacto

ry

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

Page 7: Chef Delivery

Visualization of ChangeDelivery’s dashboard summarizes all changes at a glance

Page 8: Chef Delivery

Demonstration

Page 9: Chef Delivery

Architecture

Page 10: Chef Delivery

Deploy Automation

deploy.rb

TRIGGER DEPLOY ON SELECTED INFRA

RUN DEPLOY PHASE OF DELIVERED

STAGE FOR MYAPP PROJECT API CALL

SSHTRIGGER CHEF-CLIENT VIA PUSH

Delivered

Page 11: Chef Delivery

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

Page 12: Chef Delivery

Phase ExecutionDelivery 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 repoend

Page 13: Chef Delivery