step away from that knife!
TRANSCRIPT
Knife, Y U No Automate?
• Who built this thing and why do they suck?
• What were they thinking?
• Do we really care?
Ye Olde Automation Pattern
• Local Development (Vagrant, Chef, SSH)• Source Control (Maybe)• CI (Run it again!)• Chef Server (chef-solo?)• Deploy! (cross your fingers)
What
local development/ˈlōk(ə)l dəˈveləpmənt/noun
1. Development performed in an isolated environment, such as a laptop or individual virtual machine
Code CollaborationLocal Development Continuous Integration
Chef Code Deployment
ChefSpec Berkshelf
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
Write Code Commit Code
Write Code Test Code Commit Code
Write Tests Write Code Commit Code
Start Here:
Next Step:
End State:
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
ChefSpec
Write Code
Style Check
Testing Frameworks
Testing Automation
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
● “Clean Room” development?● In place iteration?● Why not both?
Truly safe design requires validation in clean and dirty environments
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
Isolation Collaboration
● No one can break my stuff
● In pursuit of perfection
● I know how it all works
● The Bubble
● My stuff could break at any moment
● Good enough to share
● I teach others how my piece works
● Leaving the Nest
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
documentation/ˌdäkyəmənˈtāSH(ə)n/noun
1. material that provides official information or evidence or that serves as a record
commit messagehttp://programmers.stackexchange.com/questions/52267/why-should-i-write-a-commit-message
Q: Why should I write a commit message? - acidzombie24
A: Because when some poor maintainer is hunting a bug and finds that it was added in rev. xyz, he will want to know what rev. xyz was supposed to do. - Peter Taylor
When you file a pull request, all you’re doing is requesting that another developer (e.g., the project maintainer) pulls a branch from your repository into their repository.
https://www.atlassian.com/git/tutorials/making-a-pull-request
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
continuous integration/kənˈtinyo͞oəs ˌin(t)əˈɡrāSH(ə)n/noun
1. a software development practice where members of a team integrate their work frequently
continuous delivery/kənˈtinyo͞oəs dəˈliv(ə)rē/noun
1. a software development discipline where you build software in such a way that the software can be released to production at any time
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
ChefSpec
Style Check
Testing Frameworks
Testing Automation
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
What do you need to get started?
● SCM credentials (deploy key)
● Chef server account (service account)
● https://github.com/zts/cooking-with-jenkins
● http://www.cryptocracy.com/blog/2014/01/03/cooking-with-jenkins-test-kitchen-and-docker
What Code CollaborationLocal Development Continuous
IntegrationChef Code Deployment
Promote your changes
● Tag your changes in Git
● Freeze your cookbook on the Chef Server
● https://github.com/jonlives/knife-spork