SlideShare ist ein Scribd-Unternehmen logo
1 von 33
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?

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Jenkins
JenkinsJenkins
Jenkins
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
Jenkins
JenkinsJenkins
Jenkins
 
CI/CD
CI/CDCI/CD
CI/CD
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
Automation CICD
Automation CICDAutomation CICD
Automation CICD
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 

Ähnlich wie 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
 

Ähnlich wie 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
 
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
 
SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

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?

Hinweis der Redaktion

  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