Continuous Integration
with my friends from Middle Earth
Hello.
Jamie Wiseman
@instanceofjamie
Continuous Integration
• What is it?
• Why we do it?
• How do we do it?
“good luck with that”
What is it?
“Continuous integration (CI) is the practice, in
software engineering, of merging all developer
workspaces with a shared mainline several times a day.”
http://en.wikipedia.org/wiki/Continuous_integration
It’s a bit like Agile
• It’s a set of 10 principles
• Principles describe techniques
• There are tools to help you do it
• But noone started a war over CI (yet)
• Maintain a code repository
• Automate the build
• Make the build self testing
• Everyone commits to the baseline every
day
• Every commit (to baseline) should be built
• Keep the build fast
• Test in a clone of the production
environment
• Make it easy to get the latest deliverables
• Everyone can see the results of the latest
build.
• Automate Deployment.
Why do we do it?
http://en.wikipedia.org/wiki/Continuous_integration
...to prevent integration problems, referred to as
"integration hell"
Release Day! o/
Stress
How development
teams see themselves
How development
teams see themselves
However...
Time
“Computers can perform almost any conceivable action
faster than a human”
Jamie Wiseman
• Time to deploy
• Testing time
• Hotfixes
http://xkcd.com/1205/
Risk
• PEBKAC (typling fail)
• Technical Debt
• Rollback
• Timings
• Not noticing!
How do we do it?
Tools
• Git repositories (gitlab, github, bitbucket,
gitorious, etc)
• Jenkins
• Fabric
• IRC
Testing
• Simpletest
• PHPUnit
• Selenium
• Behat/Mink/XVFB
Thank you.
Questions?

Continuous integration

Editor's Notes

  • #3 Hello. Welcome.
  • #4 Who am I (I use grown up language sometimes) What Code Enigma do What I do with Code Enigma Probably going to talk a bit about how these slides were made, very excited by them
  • #5 re: How - wanted to do a live walkthrough, unprepared
  • #6 Originally wanted to do a live walkthrough, no internet access. You’re all left with a crappy slideshow.
  • #9 So things we SHOULD do, things we ACTUALLY do things we ACTUALLY do this WITH
  • #10 What I like to call ‘filler’ slides.
  • #11 Arguably, you should DEVELOP in a clone of the production environment. Actually, no it’s not arguable. Just do it. Save yourself time and pain.
  • #12 You can tell I discovered the ‘build in’ options here.
  • #15 What was release day? What was release day *like*? Stressful. Time consuming. Risk. (looking back, it was quite fun, but not for right reasons)
  • #23 Time = Money How long does it take to build stuff?
  • #24 Types of risk, and how they’re mitigated with CI tools