2. Who is this guy, anyway?
John Ferguson Smart
Consultant
Trainer
Mentor
Author
Speaker
Coder
3.
4. Development without CI
Lots of bugs
Infrequent
commits
Source code repository
Difficult
integration
Testing happens
late
Infrequent
releases
5. Development without CI
Lots of bugs
Infrequent
commits
Source code repository
Difficult
integration
Testing happens
late
Infrequent
releases
»Insufficient testing!
»Slow release process!
»Poor project visibility!
»Issues raised are harder to fix!
»…
6. Development without CI
Lots of bugs
Infrequent
commits
Source code repository
Difficult
integration
Testing happens
late
Infrequent
releases
»Project Delays!
»Unhappy clients!
»High maintenance costs!
»Inflexible code bases!
»Harder to deliver real value!
»…
7. Introducing Continuous Integration
Regular
commits
Source code repository
Testing happens early
and oftenTest Server
Regular
automated
releases
Dedicated
Build Server
» Automated build
» Automated tests
» Automated code quality metrics
» …
Fewer bugs
8. » Automated build
» Automated tests
» Automated code quality metrics
» …
Introducing Continuous Integration
Regular
commits
Source code repository
Testing happens often
Dedicated
Build Server
Test Server
Regular
automated
releases
Fewer bugs
»Smoother integration process!
»Automated regression tests!
»Regular working releases!
»Better visibility!
»Find and fix issues faster and more easily!
»…
15. You need an automated test suite
• Automated code quality metrics
• Code coverage
• Coding standards
• Potential bugs
• …
16. You need a version control system
• Store (almost) everything in version control
–Source code
–Test code
–Build scripts
–Build tools
–Configuration scripts
–…
17. You need a version control system
• Or use a local artifact repository for binaries
– Nexus or Artifactory for JAR files
– NuGet mirror for .NET (e.g. MyGet)
– npm_proxy_cache for Node.js
– …
18. You need a version control system
Be wary of long-lived branches
26. A simple build pipeline
Build
and
Fast
Tests
Slower
Tests
Acceptance
Tests
Code
Quality
Metrics
Release
Candidate
Deploy
to
Test
Deploy
to
UAT
Deploy
to
Produc=on
1.0.1