continuous integration
lion taming / code taming
old way
- deploy by hand
- hack till it works
- confusion - special decisions
lion taming - understand, conditioning, behaviour -> response trust
- understand -> deploy hard
- conditioning -> CI
- push -> test-> green
- happy
- trust - it works in live
team
- committed to quality
- everyone deploys
- identical environments
- everyone is responsible
working code
repeatable build
- automated
- no manual changes
deploy
- script <env> <version>
- not just code - config infrastructure
- always follow the pipeline - even in emergencies
rollback
- you will break stuff!
- blue is the new green (blue is working on live)
- canary servers
- databasea - keep backwards compatible
release
- last step - automatic
- small changes, frequent, get experience, less risk - maybe, maybe just to staging server
tips
- split in components
- rehearse releases - get very good at them
- manage and test infrastructure - eg test email sending
- all environments equal (vagrant)
- automate everything, if really not possible then document, but will drift