SlideShare a Scribd company logo
Continuous Integration



Adin Scannell
CTO, Gridcentric
adin@gridcentric.com
WHO AM I?


• Adin Scannell – Co-founder & CTO, Gridcentric.
• Systems and virtualization guy.
• Responsible for technology vision
  • (and the most annoying bugs).
• Email: adin@gridcentric.com
What’s continuous integration?
Classic “waterfall”




                      4
5
%#@$!
        %#@$!
                %#@$!
Minimize time between phases
(and “distance” between developers)



      Integrate continuously



         Test continuously
“Continuous Integration is a software development practice
where members of a team integrate their work frequently,
usually each person integrates at least daily - leading to
multiple integrations per day. Each integration is verified by
an automated build (including test) to detect integration
errors as quickly as possible. Many teams find that this
approach leads to significantly reduced integration problems
and allows a team to develop cohesive software more
rapidly.”
                                                 - Martin Fowler
Continuous Integration


Does require             Does not require
• Source control         • Constant releases
• Automated builds          • (i.e. continuous delivery)

• Automated tests        • No manual testing
                         • “Operations/Infrastructure as code”
                         • Agile, Scrum or Kanban
Source control
Commit early and often (develop incrementally)


Branch (when necessary) for features, releases



   Perform integration across all branches
Source control tools

• Distributed: git, hg, bzr, bitkeeper, etc.
• “Classic”: cvs, svn, etc.




• A good branching and tagging strategy is important.
Build automation
Build every commit, or as frequently as possible


Have a consistent and easily replicable environment



   Build all branches, or build from staging repos
Build tools

• The one true tool: Make

• Alternatives: Ant, mvn, scons
• On Windows: Visual Studio platform or Cmake




• Not a good build tool: your IDE
Test automation
Types: unit testing,
             component testing,
              coverage testing,
      system and integration testing,
       installation verification testing

 Purposes: smoke tests, regression tests,
    usability tests, performance tests,
     security tests, acceptance tests

Methodologies: whitebox, blackbox, greybox
More tests are better, but figure out
   what you delivers the most value to you.

              When in doubt…..




Great idea: gate your main branches with tests.
Test tools

•   Web: selenium
•   C/C++: check, cunit, cppunit
•   Python: pytest, nosetests
•   Ruby: cucumber, rspec
•   And lots more…




• Test frameworks are like a$$holes…
Continuous integration
Ties together builds and tests


 Archives artifacts, test results, build logs, etc.



         Automates triggers, pipelines



Allows for gating of merges, staging of changes
Continuous integration tools

•   Jenkins (Hudson)
•   TravisCI
•   Cruise Control
•   TeamCity
•   Buildbot
•   Bamboo
•   Team Foundation Server

• Gerrit (reviews)
WORKFLOW
OpenStack (& Gridcentric) CI Workflow

                                             4) Jenkins builds and
                                             tests change                                    8) Jenkins pulls
                                             (triggered)                                     from github, builds,
                        Gerrit                                           Jenkins
                                                                                             tests and publishes
                                             5) Jenkins updates
                                             changeset on Gerrit




  3) Developer pushes         7) On approval                         6) Another developer
  changeset to Gerrit         Gerrit merges and                      reviews the changeset
                              pushes to github

                                                  github
                        1) Developer pulls
                        from github


  2) Developer writes
  and tests code
How does openstack help me?
OpenStack cloud

OpenStack CI Workflow
                                                                                                  Test
                                                  Test                                            VM
                                                                                 Test
                                                  VM
                                                                   Test          VM
                                                                   VM

                                                   Test                            Build
                                                    VM                              VM
                                             4) Jenkins builds and Build
                                             tests change           VM                         8) Jenkins pulls
                                             (triggered)                                       from github, builds,
                        Gerrit                                             Jenkins
                                                                                               tests and publishes
                                             5) Jenkins updates
                                             changeset on Gerrit




  3) Developer pushes         7) On approval                           6) Another developer
  changeset to Gerrit         Gerrit merges and                        reviews the changeset
                              pushes to github

                                                  github
                        1) Developer pulls
                        from github


  2) Developer writes
  and tests code
Advanced continuous integration

• Leverage OpenStack to provide infrastructure.
  • Build slaves, test slaves, infrastructure dependencies.


• Structure continuous integration tests as:
  • Boot a base OpenStack image.
  • Provision software using tool like Puppet / Chef.
  • Run full tests.

• The same standardize procedures can be used to
  stand up production environments.
Continuous delivery
Discussion questions

•   Where is continuous integration easiest? Hardest?
•   Which tests (unit/component/system) are critical?
•   What are the biggest wins from CI?
•   What are your favorite tools?
•   How do you set a release cadence?
•   How are larger features incorporated?

More Related Content

What's hot

What's hot (20)

Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Jenkins
JenkinsJenkins
Jenkins
 
DevOps without DevOps Tools
DevOps without DevOps ToolsDevOps without DevOps Tools
DevOps without DevOps Tools
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
DevOps overview 2019-04-13 Nelkinda April Meetup
DevOps overview  2019-04-13 Nelkinda April MeetupDevOps overview  2019-04-13 Nelkinda April Meetup
DevOps overview 2019-04-13 Nelkinda April Meetup
 
DevOps
DevOps DevOps
DevOps
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 

Similar to Continuous integration

Automated testing DrupalCamp in Asheville
Automated testing DrupalCamp in AshevilleAutomated testing DrupalCamp in Asheville
Automated testing DrupalCamp in Asheville
Promet Source
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Mark Waite
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
VladLica
 

Similar to Continuous integration (20)

Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile wayContinuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
Jenkins & IaC
Jenkins & IaCJenkins & IaC
Jenkins & IaC
 
Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Alm 4 Azure with screenshots
Alm 4 Azure with screenshotsAlm 4 Azure with screenshots
Alm 4 Azure with screenshots
 
Automated testing DrupalCamp in Asheville
Automated testing DrupalCamp in AshevilleAutomated testing DrupalCamp in Asheville
Automated testing DrupalCamp in Asheville
 
Alm 4 Azure
Alm 4 AzureAlm 4 Azure
Alm 4 Azure
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
 
Jenkins for One
Jenkins for OneJenkins for One
Jenkins for One
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
How to push to production a project with 100+ plugins in less than 10 minutes
How to push to production a project with 100+ plugins in less than 10 minutes How to push to production a project with 100+ plugins in less than 10 minutes
How to push to production a project with 100+ plugins in less than 10 minutes
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of Life
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with Jenkins
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 

Continuous integration

  • 1. Continuous Integration Adin Scannell CTO, Gridcentric adin@gridcentric.com
  • 2. WHO AM I? • Adin Scannell – Co-founder & CTO, Gridcentric. • Systems and virtualization guy. • Responsible for technology vision • (and the most annoying bugs). • Email: adin@gridcentric.com
  • 5. 5
  • 6. %#@$! %#@$! %#@$!
  • 7. Minimize time between phases (and “distance” between developers) Integrate continuously Test continuously
  • 8.
  • 9. “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.” - Martin Fowler
  • 10. Continuous Integration Does require Does not require • Source control • Constant releases • Automated builds • (i.e. continuous delivery) • Automated tests • No manual testing • “Operations/Infrastructure as code” • Agile, Scrum or Kanban
  • 12. Commit early and often (develop incrementally) Branch (when necessary) for features, releases Perform integration across all branches
  • 13. Source control tools • Distributed: git, hg, bzr, bitkeeper, etc. • “Classic”: cvs, svn, etc. • A good branching and tagging strategy is important.
  • 14.
  • 16. Build every commit, or as frequently as possible Have a consistent and easily replicable environment Build all branches, or build from staging repos
  • 17. Build tools • The one true tool: Make • Alternatives: Ant, mvn, scons • On Windows: Visual Studio platform or Cmake • Not a good build tool: your IDE
  • 19. Types: unit testing, component testing, coverage testing, system and integration testing, installation verification testing Purposes: smoke tests, regression tests, usability tests, performance tests, security tests, acceptance tests Methodologies: whitebox, blackbox, greybox
  • 20. More tests are better, but figure out what you delivers the most value to you. When in doubt….. Great idea: gate your main branches with tests.
  • 21. Test tools • Web: selenium • C/C++: check, cunit, cppunit • Python: pytest, nosetests • Ruby: cucumber, rspec • And lots more… • Test frameworks are like a$$holes…
  • 23. Ties together builds and tests Archives artifacts, test results, build logs, etc. Automates triggers, pipelines Allows for gating of merges, staging of changes
  • 24. Continuous integration tools • Jenkins (Hudson) • TravisCI • Cruise Control • TeamCity • Buildbot • Bamboo • Team Foundation Server • Gerrit (reviews)
  • 25.
  • 26.
  • 28. OpenStack (& Gridcentric) CI Workflow 4) Jenkins builds and tests change 8) Jenkins pulls (triggered) from github, builds, Gerrit Jenkins tests and publishes 5) Jenkins updates changeset on Gerrit 3) Developer pushes 7) On approval 6) Another developer changeset to Gerrit Gerrit merges and reviews the changeset pushes to github github 1) Developer pulls from github 2) Developer writes and tests code
  • 29. How does openstack help me?
  • 30. OpenStack cloud OpenStack CI Workflow Test Test VM Test VM Test VM VM Test Build VM VM 4) Jenkins builds and Build tests change VM 8) Jenkins pulls (triggered) from github, builds, Gerrit Jenkins tests and publishes 5) Jenkins updates changeset on Gerrit 3) Developer pushes 7) On approval 6) Another developer changeset to Gerrit Gerrit merges and reviews the changeset pushes to github github 1) Developer pulls from github 2) Developer writes and tests code
  • 31. Advanced continuous integration • Leverage OpenStack to provide infrastructure. • Build slaves, test slaves, infrastructure dependencies. • Structure continuous integration tests as: • Boot a base OpenStack image. • Provision software using tool like Puppet / Chef. • Run full tests. • The same standardize procedures can be used to stand up production environments.
  • 33. Discussion questions • Where is continuous integration easiest? Hardest? • Which tests (unit/component/system) are critical? • What are the biggest wins from CI? • What are your favorite tools? • How do you set a release cadence? • How are larger features incorporated?

Editor's Notes

  1. Classical waterfall model. Doesn’t *really* exist in practice. All phases are necessary important pieces of the software development process.
  2. Problem is that the longer you wait or the more you build up between phases, the more risk you take on.
  3. In reality, you’ve always got a back arrow to all the previous steps. A poor design decision could come out in integration or test, forcing you to go back.
  4. Key insights
  5. Key insights
  6. Key insights
  7. Key insights
  8. Key insights
  9. Key insights