SlideShare a Scribd company logo
1 of 45
Download to read offline
PHP North West 2010




                    The Journey Towards
                   Continuous Integration




Sebastian Marek, Senior Software Engineer
@proofek

 a Pole living in Sheffield
 nearly 10 years PHP
  experience
 co-author of 2 PHP books
 big fan of process
  automation
 TDD and CI
 wants to be a knight
One Morning Long Ago
New experience

   Alpha-box set up
   New development processes
   Staging platform and QA team
   Deployment procedures
   Fixing problems
   Working on projects
At the Foot of Mount Doom

              increased maintenance
               time
              growing problem
               numbers
              code harder to
               understand and follow
              complex and time
               consuming testing
Looking for help!
First frustrations

   ad hoc builds
   mixture of php3 and php4
   learn as you go
   no standards
Forming up the fellowship

   Stuart Grimshaw
   Simon Westcott
   Ben Selby
   Sebastian Marek
   Rowan Merewood
   Ben Longden
Calling the council

                                      Who?
                                       managers
                                       developers

                                      What?
                                       threats
                                       opportunities
                                       planning
                                       implementation



http://www.flickr.com/photos/pedromourapinheiro/3272323691/in/photostream/
It's always about the money

 Design debt
 Late fees
 Interests




  http://www.flickr.com/photos/your_teacher/1040476355/in/photostream/
Finding the best way




          VS.
Support & roadmap




http://www.flickr.com/photos/jannem/3312115991/in/photostream/
Metrics and reports




http://www.flickr.com/photos/aussiegall/286709039/in/photostream/
Joining more powerful allies
Automation




http://www.flickr.com/photos/matthileo/3552898254/in/photostream/
East front
Automated builds

 Cruicecontrol addon
 PHPUnit integration
 phpDocumentor
  integration
 code metrics generation
 code coverage reports
 checkstyle report
  integration
 PHP Depend integration
 PHPMD support
 and many more
PHPUnit

Industry recognised xUnit testing framework for PHP,
supporting:
 mock objects
 database testing
 code coverage analysis

integrating
 selenium RC
 continuous integration platforms like CruiseControl,
   Hudson, Bamboo
phpDocumentor

        automated
         documentation for PHP
        supports different
         formats: HTML, PDF,
         CHM, XML
        web and cli interface
        easily configurable
PHP_Codesniffer

   Based on defined coding standards
   Detects coding standards violation
   Extendable and configurable
   Codebrowser
Code coverage report

   Be always on top of your tests
   Code coverage ratio
   Configurable thresholds
   Clover format
   Html format
Software metrics - PHP Depend

Code measures
 Cyclomatic Complexity
 NPath Complexity
 CodeRank
 Lines Of Code
PHP Mess Detector

         Intelligent code analyser
          Possible bugs
          Suboptimal code
          Overcomplicated
            expressions
          Unused parameters,
            methods, properties
Buildbox maintenance

   New modules added
   Increasing build time
   Often crashes
   Stability problems
   Hardware issues
phpUnderControl
Upgrades needed
Hudson – next generation

   easy installation
   easy configuration
   plugin support
   distributed builds
   multi-language support
   dependency tracking
Hudson
More automation

 git - distributed version control system
 AIE – alpha integrated environment
 capistrano
    automated deployment
    build script management
Selenium

     Automated web apps
      testing
     Regression testing
     Headless builds
One ring to rule them all




http://www.flickr.com/photos/cosmic_bandita/2218419160/in/photostream/
West front
Sonar

 quality management
  platform
 continuous analysis
 easily extendable and
  configurable
Sonar
Business wide visibility

   Meaningful reports
   Responsibility and ownership
   KPI
   Goals
Radiator view
Reports
The army needs to follow the leader

   Lead by example
   firm, but friendly and helpful
   never forget about training
   clear and simple rules
   praise vs. punishment
You broke the build!
Where's the build?
Works on my machine?!
It's your time now
Quick guide

1. Investigate
2. Trial
3. Form a team
4. Small steps
5. Be visible
6. Automate
Resources

   PHPUnit - http://www.phpunit.de/
   phpUnderControl - http://phpundercontrol.org/
   Hudson - http://hudson-ci.org/
   Sonar - http://www.sonarsource.org/
   phpDocumentor - http://www.phpdoc.org/
   PHP_CodeSniffer -
    http://pear.php.net/package/PHP_CodeSniffer/
   PHP Depend - http://pdepend.org/
   PHP Mess Detector - http://phpmd.org/
   Selenium - http://seleniumhq.org/
   xDebug - http://www.xdebug.org/
Q&A




Any questions?

  http://joind.in/2052

More Related Content

More from Sebastian Marek

vfsStream - effective filesystem mocking
vfsStream - effective filesystem mocking vfsStream - effective filesystem mocking
vfsStream - effective filesystem mocking
Sebastian Marek
 

More from Sebastian Marek (9)

Effective code reviews
Effective code reviewsEffective code reviews
Effective code reviews
 
Effective code reviews
Effective code reviewsEffective code reviews
Effective code reviews
 
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practicePHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
 
Ten Commandments Of A Software Engineer
Ten Commandments Of A Software EngineerTen Commandments Of A Software Engineer
Ten Commandments Of A Software Engineer
 
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
 
Magic behind the numbers - software metrics in practice
Magic behind the numbers - software metrics in practiceMagic behind the numbers - software metrics in practice
Magic behind the numbers - software metrics in practice
 
Back to basics - PHP_Codesniffer
Back to basics - PHP_CodesnifferBack to basics - PHP_Codesniffer
Back to basics - PHP_Codesniffer
 
Sonar - the ring to rule them all
Sonar - the ring to rule them allSonar - the ring to rule them all
Sonar - the ring to rule them all
 
vfsStream - effective filesystem mocking
vfsStream - effective filesystem mocking vfsStream - effective filesystem mocking
vfsStream - effective filesystem mocking
 

Recently uploaded

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
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
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
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...
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 

The Journey towards Continuous Integration