Upload
chef
View
550
Download
2
Embed Size (px)
Citation preview
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 safetyReliable and repeatable workflow
Visibility of who did what, and when
Shared WorkflowDelivery’s pipeline is shared across projects and teams
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?
Delivery Phases
Verify and Build
Build
Acceptance, Union, Rehearsal, DeliveredProvision Deploy
Smoke Functional
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
Visualization of ChangeDelivery’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
SSHTRIGGER 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 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