chef meetupfiles.meetup.com/5851622/chef delivery.pdf · maggie walker • front-end developer on...
TRANSCRIPT
Chef Meetup
• 6:30 – 7:00 – Meet, greet, and eat• 7:00 – 7:20 – Introductions and Welcome• 7:20 – 8:30 – Chef Delivery• 8:30 – 9:00 – Networking & Wrap-up
Introductions & Announcements
• Hiring?• Looking for work?• Attend or speaking at a conference?• Something we all should know?
Chef DeliveryNathen Harvey & Maggie Walker
Maggie Walker
• Front-end Developer on the CIA team at Chef• Maker of shiny UI on chef.io, downloads.chef.io, learn.chef.io, and docs.chef.io• Past life as a Professional Hula Hoop Dance Teacher and Performer (yes, really)
• @magwalk• [email protected]
Nathen Harvey
• VP, Community Development at Chef• Co-host of the Food Fight Show Podcast• Co-organizer of DevOpsDC meetup• Occasional farmer – http://ei.chef.io• Love eggs – http://eggs.chef.io
• @nathenharvey• [email protected]
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 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
SubmitChange
Chef Provides a Proven Approach to DevOps
...
...
...
Targets/Workloads
Collaborative Dev
Chef Analytics
Production
Chef Server
Chef Server
Chef Supermarket
Assessment
Chef Compliance
� Search
^ Audit
Ǘ Discover
Deploy
Test
Chef Delivery!
Local Dev
ê Model
ƨ Build
¿ Test
Chef DK
Chef Client & Cookbooks
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SubmitChange
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SubmitChange
Does thiscode changelook good?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
SubmitChange
Does thiscode changelook good?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
ProvisionDeploySmoke
Functional
SubmitChange
Does thiscode changelook good?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
ProvisionDeploySmoke
Functional
SubmitChange
Does thiscode changelook good?
Do we wantto ship this?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
SubmitChange
Does thiscode changelook good?
Do we wantto ship this?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
SubmitChange
Does thiscode changelook good?
Do we wantto ship this?
Unified Pipeline Shape
The stages are fixed, and each stage has a fixed set of phases!
APPROVE DELIVER
LintSyntaxUnit
SecurityQualityPublish
LintSyntaxUnit
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
ProvisionDeploySmoke
Functional
SubmitChange
Does thiscode changelook good?
Do we wantto 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
Delivery Phases – Learn Chef
• RSpec
Verify and Build
Build
• skip • skip
• skip • skip • Create tarball
Acceptance, Union, Rehearsal, Delivered
• Chef Provisioning• S3 Buckets• Setup Fastly
Provision Deploy
• Upload to S3• Flush Fastly
• Curl $URL; check for 200 OK
Smoke Functional
• linkchecker• Notify Slack
Delivery Phases
Verify and Build
Build
Acceptance, Union, Rehearsal, Delivered
Provision Deploy
Smoke Functional
Shared Workflow
Delivery’s pipeline is shared across projects and teams
Visualization of ChangeDelivery’s dashboard summarizes all changes at a glance
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 repoend