Introduction to
Continuous Integration
      Chris@Chris-Read.net
Why?

•   Catch bugs

•   Get rid of merge hell

•   Make teams more
    efficient


                              Photo by Osama ALASSIRY
How?

•   Fast Feedback

•   Repeatability

•   Collective Ownership
Core Practices

•   Single Source Repository

•   Automate Build

•   Automate Testing

•   Publish the Latest
    Distributable

                               Photo by teclasorg
Single Source
         Repository
• Single point of truth
• Everyone's code in the same place
• NOT a branch per developer
• Shared ownership
Automate Build

• Using the IDE is not automating!
• Use a build tool
• Compile, package, test
Automate Testing

• Not just Unit Tests
• Failing tests fail the build
• Fix it if it’s broken or you’re wasting your
  time
Publish Latest
        Distributable

• Make it easy to get the final product
• Should only be built once
• Configuration is separate
Evolution

•   Practice

•   Language

•   Tools
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
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 first
Every Commit Builds

• It’s all about fast feedback
• Small changes
• Less to merge and/or fix
Test in Production
           Clone

• Detect multi-threaded or cluster issues
• Tests system architecture
• Includes databases!
Keep Build Fast

• It really is all about feedback
• If things break you find out about it while
  it’s still fresh in your mind
• Keep up with frequent check ins
Everyone Sees What’s
     Happening

• Reduce time to fix
• No excuse to check in on broken build
• It’s not about blame, it’s about feedback
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
Language Evolution

•   Repository

•   Build

•   Integrate

•   Test
Build
•   Compile      •   Run Tests

•   Link         •   Analyse Code

                 •   Package

                 •   Deploy
Integrate
•   Team members on a       •   Getting projects
    project getting their       working together
    code to work together
                            •   Other systems

                            •   Other libraries
Test
•   Just test my code in       •   Unit Tests
    isolation
                               •   Integration Tests
•   It compiles, I’m done
                               •   Acceptance Tests
•   Manual testing
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
Tools Evolution &
            Trends
•   Source Control

•   Build Analytics

•   Metrics

•   Testing Tools

•   CI Servers

                      Photo by docman
Source Control

• Inter-SCM Integration
• See which revision broke the build
• Cope with the load
• Artefact versioning
Build Analytics

• Test Code Coverage
• Bugs
• Style
• Complexity
• Visualisation
Metrics

• Interesting code stats
• Track quality trends
 • Performance
 • Code coverage
 • Build times
Testing Tools
• Test doubles - test interaction
 • Stubs
 • Mocking
• BDD
• FIT
• Selenium
CI Servers

• Agents and Build Grids
• Personal Builds
• Pipelines
• Reporting
• Ease of use
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
Q&A
Thanks for participating...

More Related Content

ZIP
Continuous Integration, Build Pipelines and Continuous Deployment
PDF
Continuous Integration at T3CON08
PDF
Continuous Integration 101
PDF
Continuous integration
KEY
Continuous Integration, the minimum viable product
PPTX
Continuous integration
PPTX
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
PPTX
Continous integration with jenkins
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration at T3CON08
Continuous Integration 101
Continuous integration
Continuous Integration, the minimum viable product
Continuous integration
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Continous integration with jenkins

What's hot (20)

PDF
Simple Continous Integration
PPTX
Continuous Integration and Continuous Deployment in Enterprise scenario
PPTX
#speakgell - Continuous Integration in iconnect360
PPTX
Continuous Integration for Beginners
PDF
Continuous Integration (CI) - An effective development practice
PDF
Introduction to Continuous Integration
PPT
Continuous Integration and Builds
PPTX
Continuous delivery applied
PDF
WSO2 IoTS Device Manufacturer Guide
PDF
Continuous Integration
PDF
Improving software quality using Continuous Integration
PDF
CICD by Teerapat
PPTX
Continuous integration, delivery & deployment
PDF
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
PDF
PPTX
Continuous Delivery
PPTX
Flusso Continuous Integration & Continuous Delivery
PPTX
CI-CD and DevOps with Ruby
PDF
Continuous delivery - tools and techniques
PPTX
Intro to Continuous Integration
Simple Continous Integration
Continuous Integration and Continuous Deployment in Enterprise scenario
#speakgell - Continuous Integration in iconnect360
Continuous Integration for Beginners
Continuous Integration (CI) - An effective development practice
Introduction to Continuous Integration
Continuous Integration and Builds
Continuous delivery applied
WSO2 IoTS Device Manufacturer Guide
Continuous Integration
Improving software quality using Continuous Integration
CICD by Teerapat
Continuous integration, delivery & deployment
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
CI-CD and DevOps with Ruby
Continuous delivery - tools and techniques
Intro to Continuous Integration

Similar to Introduction To Continuous Integration (20)

PPTX
Introduction to unit testing
PPTX
AgileLINC Continous Slides by Daniel Harp
KEY
Continuous Integration In A PHP World
PPTX
Lean-Agile Development with SharePoint - Bill Ayers
PPTX
The Key Components of Adopting CI The OpenStack Way
KEY
Continuous integration & deployment
PPTX
Continuous Integration: Finding problems soonest
PDF
Introduction to-automated-testing
PDF
Introduction to Automated Testing
PDF
Why your company loves to welcome change but sucks at accommodating it
PPTX
MyHeritage - QA Automations in a Continuous Deployment environment
PPTX
Docker and Jenkins Pipeline
PPTX
MHA2018 - Docker and Jenkins Pipeline for Continuous integration - Mark Waite
PPTX
Testing
PDF
Core Principles Of Ci
PPTX
MyHeritage - End 2 End testing Infra
PDF
Unit testing
PPTX
Continuous integration sql in the city
PPTX
Introduction to jenkins
PPTX
Coding Standard And Code Review
Introduction to unit testing
AgileLINC Continous Slides by Daniel Harp
Continuous Integration In A PHP World
Lean-Agile Development with SharePoint - Bill Ayers
The Key Components of Adopting CI The OpenStack Way
Continuous integration & deployment
Continuous Integration: Finding problems soonest
Introduction to-automated-testing
Introduction to Automated Testing
Why your company loves to welcome change but sucks at accommodating it
MyHeritage - QA Automations in a Continuous Deployment environment
Docker and Jenkins Pipeline
MHA2018 - Docker and Jenkins Pipeline for Continuous integration - Mark Waite
Testing
Core Principles Of Ci
MyHeritage - End 2 End testing Infra
Unit testing
Continuous integration sql in the city
Introduction to jenkins
Coding Standard And Code Review

Recently uploaded (20)

PDF
A symptom-driven medical diagnosis support model based on machine learning te...
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PPTX
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
PPTX
Information-Technology-in-Human-Society.pptx
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PPTX
How to Convert Tickets Into Sales Opportunity in Odoo 18
PDF
Decision Optimization - From Theory to Practice
PDF
Co-training pseudo-labeling for text classification with support vector machi...
PDF
CEH Module 2 Footprinting CEH V13, concepts
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
PDF
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
PDF
Early detection and classification of bone marrow changes in lumbar vertebrae...
PDF
Human Computer Interaction Miterm Lesson
PDF
Identification of potential depression in social media posts
PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
PPTX
How to use fields_get method in Odoo 18
PDF
substrate PowerPoint Presentation basic one
PDF
Streamline Vulnerability Management From Minimal Images to SBOMs
PDF
Advancing precision in air quality forecasting through machine learning integ...
A symptom-driven medical diagnosis support model based on machine learning te...
Lung cancer patients survival prediction using outlier detection and optimize...
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
Information-Technology-in-Human-Society.pptx
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
How to Convert Tickets Into Sales Opportunity in Odoo 18
Decision Optimization - From Theory to Practice
Co-training pseudo-labeling for text classification with support vector machi...
CEH Module 2 Footprinting CEH V13, concepts
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Build automations faster and more reliably with UiPath ScreenPlay
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
Early detection and classification of bone marrow changes in lumbar vertebrae...
Human Computer Interaction Miterm Lesson
Identification of potential depression in social media posts
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
How to use fields_get method in Odoo 18
substrate PowerPoint Presentation basic one
Streamline Vulnerability Management From Minimal Images to SBOMs
Advancing precision in air quality forecasting through machine learning integ...

Introduction To Continuous Integration

  • 2. Why? • Catch bugs • Get rid of merge hell • Make teams more efficient Photo by Osama ALASSIRY
  • 3. How? • Fast Feedback • Repeatability • Collective Ownership
  • 4. Core Practices • Single Source Repository • Automate Build • Automate Testing • Publish the Latest Distributable Photo by teclasorg
  • 5. Single Source Repository • Single point of truth • Everyone's code in the same place • NOT a branch per developer • Shared ownership
  • 6. Automate Build • Using the IDE is not automating! • Use a build tool • Compile, package, test
  • 7. Automate Testing • Not just Unit Tests • Failing tests fail the build • Fix it if it’s broken or you’re wasting your time
  • 8. Publish Latest Distributable • Make it easy to get the final product • Should only be built once • Configuration is separate
  • 9. Evolution • Practice • Language • Tools
  • 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 first
  • 12. Every Commit Builds • It’s all about fast feedback • Small changes • Less to merge and/or fix
  • 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 find 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 fix • 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
  • 17. Language Evolution • Repository • Build • Integrate • Test
  • 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
  • 24. Build Analytics • Test Code Coverage • Bugs • Style • Complexity • Visualisation
  • 25. Metrics • Interesting code stats • Track quality trends • Performance • Code coverage • Build times
  • 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