SlideShare a Scribd company logo
Continuous Integration
          For
Open Source Distributions


   Sriram Narayanan
   sriram@belenix.org
      @sriramnrn
About me


Belenix Tester + Developer



     Thoughtworker
Why we work on distros
●   Innovate
    ●   more versatile installation
    ●   faster boot up times
    ●   experimental drivers


●   Learn package management (Rolling updates!)


●   Learn how a distro works (LFS,BLFS + more)
Pain points for a Distro Maintainer
●   Repeat Tasks


●   Dependency Tracking and Management


●   Manual Testing
Pain points for a Distro Maintainer
●   Repeat Tasks
    ●   Track upstream changes and fixes
    ●   Regular Distro builds
    ●   Changelog and Release Notes
    ●   Documentation Updates


●   Dependency Tracking and Management


●   Manual Testing
Pain points for a Distro Maintainer
●   Repeat Tasks


●   Dependency Tracking and Management
    ●   Dependencies Expressed by not Tested
    ●   Insufficient Integration Tests
    ●   Heavily dependent on manual testing


●   Manual Testing
Pain points for a Distro Maintainer
●   Repeat Tasks
●   Dependency Tracking and Management
●   Manual Tests
    ●   Package Integration
    ●   Installation
    ●   Desktop Application Functionality
    ●   Service Functionality


    ●   Testing at too many levels
    ●   Not just exploratory (More exploratory is good)
Continuous Integration - Basics
●   “Integrate changes continuously”
●   Checkout source, make, make test, package
●   Usual Implementation
    ●   Automated Agents that perform tasks
    ●   Farm of Agents depending upon scale and budget
         –   Great for packaging multiple apps in parallel
         –   Parallel Tests
Continuous Integration - Benefits
●   Detect issues earlier
●   Package software earlier
●   Automate various tasks
    ●   Packaging
    ●   Testing
    ●   Integration
    ●   Generate ChangeLog + Release Notes skeleton
    ●   Pending Documentation Hints to Documentation
        Team
    ●   Build the ISO!
Continuous Integration Today
●   Isolated build environments
    ●   Based on chroot jails
    ●   Used by Fedora, Debian, Suse, et al
●   Continuous Integration servers
    ●   Jenkins/Hudson
    ●   Koji
    ●   Others (distro specific)
Continuous Integration
               – What's missing
●   Dependency awareness
    ●   A “Green” upstream should trigger downstream
        builds
    ●   Complex Dependency graph builds and tests
    ●   Prevents Automated Consolidation Releases



●   A Variety of Testing
    ●   “make test” is not enough!
Continuous Integration
                   – What's missing
 ●   Dependency Awareness
                                                                 httpd
                                                         apr

                                                               subversion




Image Credits: http://cd-with-thoughtworks-go.blogspot.in/
Why “make test” is not enough
        ./configure           make          make test          package



●   Tests the app only on the compiled system
●   No tests post installation
    ●    Packaging occurs after make test
    ●    Packaging errors are not detected
          –   Incorrect placement, ownership and permissions
          –   Conflicting requirements
          –   Missing files
●   Integration Tests needed
Testing


The Test Pyramid – Mike Cohn

                                        User
                                      Interface



                                    Service Layer
                                     (Integration)



                                         Unit



                    http://martinfowler.com/bliki/TestPyramid.html
About Unit Tests
●   Unit Tests
    ●   Requirements in executable form
    ●   Detect what exact functionality has broken
About Integration Tests


●   Service Level Tests
    ●   Is ComponentA correctly calling ComponentB?
    ●   Is ComponentA fulfilling its public API contract?
About UI Level Tests


●   Test End to End Functionality
    ●   e.g. Sahi based tests
What Tests tell you


●   UI Tests - “Something in this feature broke”


●   Integration Tests - “Component B returned an
    unexpected response to Component A”


●   Unit Tests - “When we introduce functionality
    requirement #13 into Component B, then our
    code causes requirements #7 and #9 to break”.
Post – Installation Integration Tests
●   CentOS package level tests
    ●   A good start!


●   Some useful tests for distro maintainers
        –   Is httpd able to serve files ? (selinux issues!)
        –   Is SSH accepting connections ?
        –   Did the network subsystem initialize correctly?
        –   Did the installer set the MBR + active partition correctly?
        –   Is the DNS server accepting queries ?
    ●   Is the application behaving as required?
CI in Belenix
 nginx
  httpd

postgres   WebStack
                                             Distro + package level
python                                     smoke tests


 shell
  httpd

   vi      Userland
                        Integration       Automated       Post Install
  awk                      Tests            Install         Tests



             ssh
                                      ●   Distro tests +
                                          Consolidation level
            kernel
                                          smoke tests
Roadmap - CI and Belenix
●   Package early
●   Consolidations – kernel, userland, subsystems
    (storage, firewall, load balancer)
●   Custom distros – CoreOS, storage, firewall,
    load balancer
    ●   Each with its own functional test suite!
●   CI for open source projects that we bundle
    ●   Potential inter-distro inter-project collaboration
Thanks!


www.belenix.org


   @belenix


 @sriramNRN

More Related Content

What's hot (20)

PPTX
Jenkins
MohanRaviRohitth
 
PPTX
Ci jenkins maven svn
Ankur Goyal
 
PDF
Hacking Jenkins
Miro Cupak
 
PPTX
Pipeline as code - new feature in Jenkins 2
Michal Ziarnik
 
PPTX
Embrace Maven
Guy Marom
 
ODP
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
PDF
Jenkins Meetup Pune
Umesh Kumhar
 
ODP
Pipeline based deployments on Jenkins
Knoldus Inc.
 
PDF
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Alvin Huang
 
PDF
Puppet & Jenkins
Matthew Barr
 
PDF
Deploying software at Scale
Kris Buytaert
 
PDF
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
PDF
JavaOne 2016 - Pipeline as code
Bert Jan Schrijver
 
PPTX
CI/CD on Android project via Jenkins Pipeline
Veaceslav Gaidarji
 
PPTX
Continuous integration with teamcity
Eugene Sheretov
 
PDF
Continuous Development Pipeline
Izzet Mustafaiev
 
PDF
Building an Extensible, Resumable DSL on Top of Apache Groovy
jgcloudbees
 
PDF
Jenkins : Pipeline As Code
Shreyas Chaudhari
 
PPTX
Supermondays: Jenkins CI lightning talk
Michael Peacock
 
PPTX
Visual Regression Testing: In search of an Ember solution
Lisa Backer
 
Ci jenkins maven svn
Ankur Goyal
 
Hacking Jenkins
Miro Cupak
 
Pipeline as code - new feature in Jenkins 2
Michal Ziarnik
 
Embrace Maven
Guy Marom
 
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
Jenkins Meetup Pune
Umesh Kumhar
 
Pipeline based deployments on Jenkins
Knoldus Inc.
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Alvin Huang
 
Puppet & Jenkins
Matthew Barr
 
Deploying software at Scale
Kris Buytaert
 
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
JavaOne 2016 - Pipeline as code
Bert Jan Schrijver
 
CI/CD on Android project via Jenkins Pipeline
Veaceslav Gaidarji
 
Continuous integration with teamcity
Eugene Sheretov
 
Continuous Development Pipeline
Izzet Mustafaiev
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
jgcloudbees
 
Jenkins : Pipeline As Code
Shreyas Chaudhari
 
Supermondays: Jenkins CI lightning talk
Michael Peacock
 
Visual Regression Testing: In search of an Ember solution
Lisa Backer
 

Similar to Continuous integration for open source distros v 3.0 (20)

PDF
Integration testing - A&BP CC
JWORKS powered by Ordina
 
PPTX
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Борис Зора
 
PDF
Getting to Walk with DevOps
Eklove Mohan
 
PDF
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
Michael Lihs
 
PPTX
Test automation proposal
Mihai-Cristian Fratila
 
ODP
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Ohad Basan
 
PDF
Jenkins_1679702972.pdf
MahmoudAlnmr1
 
PDF
jenkins.pdf
shahidafrith
 
PDF
Architecting for the cloud storage build test
Len Bass
 
PPTX
Continuous testing
Oleksandr Metelytsia
 
PPTX
Continuous Integration as a Way of Life
Melissa Benua
 
PDF
Cloud for Agile Testing - Burak Koyuncu
Keytorc Software Testing Services
 
PDF
Software Delivery in 2016 - A Continuous Delivery Approach
Giovanni Toraldo
 
PPTX
Fundamentals of DevOps and CI/CD
Batyr Nuryyev
 
PPTX
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Leonard Fingerman
 
PDF
Production Ready WordPress #WPLDN
Edmund Turbin
 
PPTX
Jenkins an opensource CICD platform for all
ssuserd7cedc
 
PDF
Automated testing DrupalCamp in Asheville
Promet Source
 
PPTX
Introduction to jenkins
Abe Diaz
 
PPTX
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Binary Studio
 
Integration testing - A&BP CC
JWORKS powered by Ordina
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Борис Зора
 
Getting to Walk with DevOps
Eklove Mohan
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
Michael Lihs
 
Test automation proposal
Mihai-Cristian Fratila
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Ohad Basan
 
Jenkins_1679702972.pdf
MahmoudAlnmr1
 
jenkins.pdf
shahidafrith
 
Architecting for the cloud storage build test
Len Bass
 
Continuous testing
Oleksandr Metelytsia
 
Continuous Integration as a Way of Life
Melissa Benua
 
Cloud for Agile Testing - Burak Koyuncu
Keytorc Software Testing Services
 
Software Delivery in 2016 - A Continuous Delivery Approach
Giovanni Toraldo
 
Fundamentals of DevOps and CI/CD
Batyr Nuryyev
 
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Leonard Fingerman
 
Production Ready WordPress #WPLDN
Edmund Turbin
 
Jenkins an opensource CICD platform for all
ssuserd7cedc
 
Automated testing DrupalCamp in Asheville
Promet Source
 
Introduction to jenkins
Abe Diaz
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Binary Studio
 
Ad

More from Sriram Narayanan (6)

PDF
Making cd happen thought works talks tech 27 march 2019
Sriram Narayanan
 
PDF
Standups
Sriram Narayanan
 
PDF
Migrating your it policies to the cloud
Sriram Narayanan
 
PDF
Segregation of Duties and Continuous Delivery
Sriram Narayanan
 
PPTX
Linux – routing and firewall for beginners v 1.0
Sriram Narayanan
 
ODP
Build your own san
Sriram Narayanan
 
Making cd happen thought works talks tech 27 march 2019
Sriram Narayanan
 
Migrating your it policies to the cloud
Sriram Narayanan
 
Segregation of Duties and Continuous Delivery
Sriram Narayanan
 
Linux – routing and firewall for beginners v 1.0
Sriram Narayanan
 
Build your own san
Sriram Narayanan
 
Ad

Continuous integration for open source distros v 3.0

  • 1. Continuous Integration For Open Source Distributions Sriram Narayanan [email protected] @sriramnrn
  • 2. About me Belenix Tester + Developer Thoughtworker
  • 3. Why we work on distros ● Innovate ● more versatile installation ● faster boot up times ● experimental drivers ● Learn package management (Rolling updates!) ● Learn how a distro works (LFS,BLFS + more)
  • 4. Pain points for a Distro Maintainer ● Repeat Tasks ● Dependency Tracking and Management ● Manual Testing
  • 5. Pain points for a Distro Maintainer ● Repeat Tasks ● Track upstream changes and fixes ● Regular Distro builds ● Changelog and Release Notes ● Documentation Updates ● Dependency Tracking and Management ● Manual Testing
  • 6. Pain points for a Distro Maintainer ● Repeat Tasks ● Dependency Tracking and Management ● Dependencies Expressed by not Tested ● Insufficient Integration Tests ● Heavily dependent on manual testing ● Manual Testing
  • 7. Pain points for a Distro Maintainer ● Repeat Tasks ● Dependency Tracking and Management ● Manual Tests ● Package Integration ● Installation ● Desktop Application Functionality ● Service Functionality ● Testing at too many levels ● Not just exploratory (More exploratory is good)
  • 8. Continuous Integration - Basics ● “Integrate changes continuously” ● Checkout source, make, make test, package ● Usual Implementation ● Automated Agents that perform tasks ● Farm of Agents depending upon scale and budget – Great for packaging multiple apps in parallel – Parallel Tests
  • 9. Continuous Integration - Benefits ● Detect issues earlier ● Package software earlier ● Automate various tasks ● Packaging ● Testing ● Integration ● Generate ChangeLog + Release Notes skeleton ● Pending Documentation Hints to Documentation Team ● Build the ISO!
  • 10. Continuous Integration Today ● Isolated build environments ● Based on chroot jails ● Used by Fedora, Debian, Suse, et al ● Continuous Integration servers ● Jenkins/Hudson ● Koji ● Others (distro specific)
  • 11. Continuous Integration – What's missing ● Dependency awareness ● A “Green” upstream should trigger downstream builds ● Complex Dependency graph builds and tests ● Prevents Automated Consolidation Releases ● A Variety of Testing ● “make test” is not enough!
  • 12. Continuous Integration – What's missing ● Dependency Awareness httpd apr subversion Image Credits: http://cd-with-thoughtworks-go.blogspot.in/
  • 13. Why “make test” is not enough ./configure make make test package ● Tests the app only on the compiled system ● No tests post installation ● Packaging occurs after make test ● Packaging errors are not detected – Incorrect placement, ownership and permissions – Conflicting requirements – Missing files ● Integration Tests needed
  • 14. Testing The Test Pyramid – Mike Cohn User Interface Service Layer (Integration) Unit http://martinfowler.com/bliki/TestPyramid.html
  • 15. About Unit Tests ● Unit Tests ● Requirements in executable form ● Detect what exact functionality has broken
  • 16. About Integration Tests ● Service Level Tests ● Is ComponentA correctly calling ComponentB? ● Is ComponentA fulfilling its public API contract?
  • 17. About UI Level Tests ● Test End to End Functionality ● e.g. Sahi based tests
  • 18. What Tests tell you ● UI Tests - “Something in this feature broke” ● Integration Tests - “Component B returned an unexpected response to Component A” ● Unit Tests - “When we introduce functionality requirement #13 into Component B, then our code causes requirements #7 and #9 to break”.
  • 19. Post – Installation Integration Tests ● CentOS package level tests ● A good start! ● Some useful tests for distro maintainers – Is httpd able to serve files ? (selinux issues!) – Is SSH accepting connections ? – Did the network subsystem initialize correctly? – Did the installer set the MBR + active partition correctly? – Is the DNS server accepting queries ? ● Is the application behaving as required?
  • 20. CI in Belenix nginx httpd postgres WebStack Distro + package level python smoke tests shell httpd vi Userland Integration Automated Post Install awk Tests Install Tests ssh ● Distro tests + Consolidation level kernel smoke tests
  • 21. Roadmap - CI and Belenix ● Package early ● Consolidations – kernel, userland, subsystems (storage, firewall, load balancer) ● Custom distros – CoreOS, storage, firewall, load balancer ● Each with its own functional test suite! ● CI for open source projects that we bundle ● Potential inter-distro inter-project collaboration
  • 22. Thanks! www.belenix.org @belenix @sriramNRN