10. Practice Evolution
⢠Everyone commits more
often
⢠Every commit should
build
⢠Test in production clone
⢠Keep the build fast
⢠Everyone sees whatâs
happening
⢠Automate deployment
11. Commit More Often
⢠âAt least once a dayâ - aim for at least once
an hour
⢠Needs a small unit of work
⢠To commit cleanly you need to update ďŹrst
12. Every Commit Builds
⢠Itâs all about fast feedback
⢠Small changes
⢠Less to merge and/or ďŹx
13. Test in Production
Clone
⢠Detect multi-threaded or cluster issues
⢠Tests system architecture
⢠Includes databases!
14. Keep Build Fast
⢠It really is all about feedback
⢠If things break you ďŹnd out about it while
itâs still fresh in your mind
⢠Keep up with frequent check ins
15. Everyone Sees Whatâs
Happening
⢠Reduce time to ďŹx
⢠No excuse to check in on broken build
⢠Itâs not about blame, itâs about feedback
16. Automate Deployment
⢠Reduce Human Error
⢠Verify you can get it running somewhere
other than âmy machineâ
⢠Test not only the code but your
deployment mechanism too
18. Build
⢠Compile ⢠Run Tests
⢠Link ⢠Analyse Code
⢠Package
⢠Deploy
19. Integrate
⢠Team members on a ⢠Getting projects
project getting their working together
code to work together
⢠Other systems
⢠Other libraries
20. Test
⢠Just test my code in ⢠Unit Tests
isolation
⢠Integration Tests
⢠It compiles, Iâm done
⢠Acceptance Tests
⢠Manual testing
21. Making CI Work
⢠Canât be done in
isolation
⢠Pick the right tools for
the job
⢠Itâs not a silver bullet
Image by LiminalMike
22. Tools Evolution &
Trends
⢠Source Control
⢠Build Analytics
⢠Metrics
⢠Testing Tools
⢠CI Servers
Photo by docman
23. Source Control
⢠Inter-SCM Integration
⢠See which revision broke the build
⢠Cope with the load
⢠Artefact versioning
26. Testing Tools
⢠Test doubles - test interaction
⢠Stubs
⢠Mocking
⢠BDD
⢠FIT
⢠Selenium
27. CI Servers
⢠Agents and Build Grids
⢠Personal Builds
⢠Pipelines
⢠Reporting
⢠Ease of use
28. Summary
⢠Good CI will increase development
throughput and code quality
⢠CI is a set of principles, not a set of steps
⢠Be pragmatic - evolve your CI with your
project