SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Continuous Integration Step-by-step
         php|tek Chicago 2009
Who am I ?
Michelangelo van Dam

Independent Enterprise PHP consultant
Co-founder PHPBelgium

Mail me at dragonbe [at] gmail [dot] com
Follow me on http://twitter.com/DragonBe
Read my articles on http://dragonbe.com
See my profile on http://linkedin.com/in/michelangelovandam




                      2
Topics
•   Development practices       •   PHP Toolset
    - Live Development              - Subversion
    - Shared Drive                  - PHPDocumentor
    - Staged Environments           - PHPUnit
    - Version Control               - Xdebug
    - Automation                    - Phing
    - Continuous                    - CI
      Integration




                            3
Development Practices




          4
Live Development

•   development on “live” server
•   errors, failures and warnings exposed
•   potential security risks
•   no way to revert back (w/o backups)




                             5
Shared drive

•   using a shared drive to store code base
•   risk of overwriting each other’s work
•   code is uploaded to “live” server for testing
•   quick fixes occur on “live” environments for speed
•   same issues as with “live development”




                            6
Staged Environments

•   separate platform for each “stage” of development
    - LOCAL for local development
    - DEV to combine all development of all developers
    - TEST to test the application(s)
    - ACC for acceptance by the customer(s)
    - PROD as production or “live” system

                            7
Version Control

•   each change of code is registered (revision)
•   code conflicts are detected
•   release management possible
•   reverting to previous revisions
•   backup




                             8
Automation

•   write once, run many
•   is less vulnerable to human error
    - humans still write scripts to automate processes !
•   can be scheduled, triggered, pushed and pulled
•   behaves always in the same way
    - so results can be predictable

                             9
Continuous Integration
•   automated process
    - build
    - test
    - deploy
•   in a continuous way
    - after each commit into versioning system
    - at specific intervals (e.g. nightly builds)
•   always a “deployable” release


                             10
PHP Toolset




     11
Versioning your code
•   Subversion
    - more options then CVS
    - can be integrated with GIT
•   easy set up / maintain
    - all OSes (Windows, Mac, Linux, ...)
    - great support in tools (IDE and regular clients)
•   good documentation (http://subversion.tigris.org)


                             12
Document your code

•   PHPDocumentor
    www.phpdocumentor.org
•   provides immediate API
    documentation
•   based on in-code
    documentation



                         13
Check your code

•   PHPLint
•   checks your code on coding errors
•   creates documentation based on source code
•   http://www.icosaedro.it/phplint/
•   or use php -l <file.php>




                           14
Test your code
•   PHPUnit (phpunit.de)
    - family of the xUnit testing suites
•   easy to learn, hard to do ...
•   easy to install (using PEAR)
•   provides extra features
    - code duplication detection (cdd)
    - code coverage reporting (with Xdebug)
    - test driven documentation
                           15
Debug your code

•   Xdebug (xdebug.org)
    - advanced debug reporting
    - profiling features
•   Integrates well with other tools (like PHPUnit)




                             16
Validate your code

•   PHP_CodeSniffer
•   PEAR package
•   checks your code for coding standards
•   http://pear.php.net/package/PHP_CodeSniffer




                            17
Build your code

•   Phing (phing.info)
•   alternate for ANT
•   building is more automating previous steps
•   ensures you’ll run all steps the same way




                            18
Let’s automate this all !
•   CruiseControl as your CI system
•   phpUnderControl has a more detailed interface
•   uses Phing build files to process all previous steps
•   generates reports for each stage
•   triggered by
    - commits into the repository
    - scheduled building processes (e.g. each night)

                              19
Example phing build.xml




           20
Conclusion

         CI automates manual processes
continues to do so on each cycle (“continuous”)
        reports on successes and failures
      frees up versioning system resources




                     21
Credits

                   Lomo elePHPant
http://www.flickr.com/photos/jakobwesthoff/3231273333/

               ElePHPant to the rescue
http://www.flickr.com/photos/tobiasschlitt/2733763988/




                        22
License
This presentation is released under the Creative Commons
Attribution-Share Alike 3.0 Unported License
You are free:
- to share : to copy, distribute and transmit the work
- to remix : to adapt the work

Under the following conditions:
- attribution :You must attribute the work in the manner specified by the author or licensor
- share alike : If you alter, transform, or build upon this work, you may distribute the resulting work
only under the same, similar or a compatible license



See: http://creativecommons.org/licenses/by-sa/3.0/



                                                23
Thank you

       Slides available on
http://slideshare.net/DragonBe

  Vote this presentation on
     http://joind.in/444




             24

Weitere ähnliche Inhalte

Was ist angesagt?

DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
Magento Dev
 
Powering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with VagrantPowering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with Vagrant
Coen Jacobs
 

Was ist angesagt? (20)

OSDC 2008 talk: An open source "YouTube"
OSDC 2008 talk:  An open source "YouTube"OSDC 2008 talk:  An open source "YouTube"
OSDC 2008 talk: An open source "YouTube"
 
Composer
ComposerComposer
Composer
 
Magento 2 Capistrano Deploy
Magento 2 Capistrano DeployMagento 2 Capistrano Deploy
Magento 2 Capistrano Deploy
 
Nuxeo World Session: Building Packages for the Nuxeo Marketplace
Nuxeo World Session: Building Packages for the Nuxeo MarketplaceNuxeo World Session: Building Packages for the Nuxeo Marketplace
Nuxeo World Session: Building Packages for the Nuxeo Marketplace
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
Virtualizing Development
Virtualizing DevelopmentVirtualizing Development
Virtualizing Development
 
The Installer - BarCamp - Meet Magento 2014 Germany
The Installer - BarCamp - Meet Magento 2014 GermanyThe Installer - BarCamp - Meet Magento 2014 Germany
The Installer - BarCamp - Meet Magento 2014 Germany
 
Kernel Recipes 2017 - Developing an embedded video application on dual Linux ...
Kernel Recipes 2017 - Developing an embedded video application on dual Linux ...Kernel Recipes 2017 - Developing an embedded video application on dual Linux ...
Kernel Recipes 2017 - Developing an embedded video application on dual Linux ...
 
Groovy shell scripting
Groovy shell scriptingGroovy shell scripting
Groovy shell scripting
 
Hybrid apps 101
Hybrid apps 101Hybrid apps 101
Hybrid apps 101
 
Nuxeo and JavaScript
Nuxeo and JavaScriptNuxeo and JavaScript
Nuxeo and JavaScript
 
Everything as code - Johan Siebens STS presentation 14-01-2020
Everything as code - Johan Siebens STS presentation 14-01-2020Everything as code - Johan Siebens STS presentation 14-01-2020
Everything as code - Johan Siebens STS presentation 14-01-2020
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoupIñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
 
Guacamole introduction & research
Guacamole introduction & researchGuacamole introduction & research
Guacamole introduction & research
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
 
G3 Summit 2016 - Dockerize your Grails!
G3 Summit 2016 - Dockerize your Grails!G3 Summit 2016 - Dockerize your Grails!
G3 Summit 2016 - Dockerize your Grails!
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
Powering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with VagrantPowering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with Vagrant
 

Ähnlich wie Continuous Integration Step-by-step

symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
Fabien Potencier
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
Fabien Potencier
 
Briforum2012 advanced appv-sequencing
Briforum2012 advanced appv-sequencingBriforum2012 advanced appv-sequencing
Briforum2012 advanced appv-sequencing
Kevin Kaminski
 

Ähnlich wie Continuous Integration Step-by-step (20)

Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at eZ Con...
Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at  eZ Con...Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at  eZ Con...
Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at eZ Con...
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
 
Briforum2012 advanced appv-sequencing
Briforum2012 advanced appv-sequencingBriforum2012 advanced appv-sequencing
Briforum2012 advanced appv-sequencing
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
 
Evolution of deploy.sh
Evolution of deploy.shEvolution of deploy.sh
Evolution of deploy.sh
 
DDD (Debugger Driven Development)
DDD (Debugger Driven Development)DDD (Debugger Driven Development)
DDD (Debugger Driven Development)
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
 
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
 
Aci dp
Aci dpAci dp
Aci dp
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems
 
DevSecOps - Security in DevOps
DevSecOps - Security in DevOpsDevSecOps - Security in DevOps
DevSecOps - Security in DevOps
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 

Mehr von Michelangelo van Dam

Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
Michelangelo van Dam
 

Mehr von Michelangelo van Dam (20)

GDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and defaultGDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and default
 
Moving from app services to azure functions
Moving from app services to azure functionsMoving from app services to azure functions
Moving from app services to azure functions
 
Privacy by design
Privacy by designPrivacy by design
Privacy by design
 
DevOps or DevSecOps
DevOps or DevSecOpsDevOps or DevSecOps
DevOps or DevSecOps
 
Privacy by design
Privacy by designPrivacy by design
Privacy by design
 
Continuous deployment 2.0
Continuous deployment 2.0Continuous deployment 2.0
Continuous deployment 2.0
 
Let your tests drive your code
Let your tests drive your codeLet your tests drive your code
Let your tests drive your code
 
General Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's storyGeneral Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's story
 
Leveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantageLeveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantage
 
The road to php 7.1
The road to php 7.1The road to php 7.1
The road to php 7.1
 
Open source for a successful business
Open source for a successful businessOpen source for a successful business
Open source for a successful business
 
Decouple your framework now, thank me later
Decouple your framework now, thank me laterDecouple your framework now, thank me later
Decouple your framework now, thank me later
 
Deploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutesDeploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutes
 
Azure and OSS, a match made in heaven
Azure and OSS, a match made in heavenAzure and OSS, a match made in heaven
Azure and OSS, a match made in heaven
 
Getting hands dirty with php7
Getting hands dirty with php7Getting hands dirty with php7
Getting hands dirty with php7
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
Create, test, secure, repeat
Create, test, secure, repeatCreate, test, secure, repeat
Create, test, secure, repeat
 
The Continuous PHP Pipeline
The Continuous PHP PipelineThe Continuous PHP Pipeline
The Continuous PHP Pipeline
 
PHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the testsPHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the tests
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Continuous Integration Step-by-step

  • 1. Continuous Integration Step-by-step php|tek Chicago 2009
  • 2. Who am I ? Michelangelo van Dam Independent Enterprise PHP consultant Co-founder PHPBelgium Mail me at dragonbe [at] gmail [dot] com Follow me on http://twitter.com/DragonBe Read my articles on http://dragonbe.com See my profile on http://linkedin.com/in/michelangelovandam 2
  • 3. Topics • Development practices • PHP Toolset - Live Development - Subversion - Shared Drive - PHPDocumentor - Staged Environments - PHPUnit - Version Control - Xdebug - Automation - Phing - Continuous - CI Integration 3
  • 5. Live Development • development on “live” server • errors, failures and warnings exposed • potential security risks • no way to revert back (w/o backups) 5
  • 6. Shared drive • using a shared drive to store code base • risk of overwriting each other’s work • code is uploaded to “live” server for testing • quick fixes occur on “live” environments for speed • same issues as with “live development” 6
  • 7. Staged Environments • separate platform for each “stage” of development - LOCAL for local development - DEV to combine all development of all developers - TEST to test the application(s) - ACC for acceptance by the customer(s) - PROD as production or “live” system 7
  • 8. Version Control • each change of code is registered (revision) • code conflicts are detected • release management possible • reverting to previous revisions • backup 8
  • 9. Automation • write once, run many • is less vulnerable to human error - humans still write scripts to automate processes ! • can be scheduled, triggered, pushed and pulled • behaves always in the same way - so results can be predictable 9
  • 10. Continuous Integration • automated process - build - test - deploy • in a continuous way - after each commit into versioning system - at specific intervals (e.g. nightly builds) • always a “deployable” release 10
  • 12. Versioning your code • Subversion - more options then CVS - can be integrated with GIT • easy set up / maintain - all OSes (Windows, Mac, Linux, ...) - great support in tools (IDE and regular clients) • good documentation (http://subversion.tigris.org) 12
  • 13. Document your code • PHPDocumentor www.phpdocumentor.org • provides immediate API documentation • based on in-code documentation 13
  • 14. Check your code • PHPLint • checks your code on coding errors • creates documentation based on source code • http://www.icosaedro.it/phplint/ • or use php -l <file.php> 14
  • 15. Test your code • PHPUnit (phpunit.de) - family of the xUnit testing suites • easy to learn, hard to do ... • easy to install (using PEAR) • provides extra features - code duplication detection (cdd) - code coverage reporting (with Xdebug) - test driven documentation 15
  • 16. Debug your code • Xdebug (xdebug.org) - advanced debug reporting - profiling features • Integrates well with other tools (like PHPUnit) 16
  • 17. Validate your code • PHP_CodeSniffer • PEAR package • checks your code for coding standards • http://pear.php.net/package/PHP_CodeSniffer 17
  • 18. Build your code • Phing (phing.info) • alternate for ANT • building is more automating previous steps • ensures you’ll run all steps the same way 18
  • 19. Let’s automate this all ! • CruiseControl as your CI system • phpUnderControl has a more detailed interface • uses Phing build files to process all previous steps • generates reports for each stage • triggered by - commits into the repository - scheduled building processes (e.g. each night) 19
  • 21. Conclusion CI automates manual processes continues to do so on each cycle (“continuous”) reports on successes and failures frees up versioning system resources 21
  • 22. Credits Lomo elePHPant http://www.flickr.com/photos/jakobwesthoff/3231273333/ ElePHPant to the rescue http://www.flickr.com/photos/tobiasschlitt/2733763988/ 22
  • 23. License This presentation is released under the Creative Commons Attribution-Share Alike 3.0 Unported License You are free: - to share : to copy, distribute and transmit the work - to remix : to adapt the work Under the following conditions: - attribution :You must attribute the work in the manner specified by the author or licensor - share alike : If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license See: http://creativecommons.org/licenses/by-sa/3.0/ 23
  • 24. Thank you Slides available on http://slideshare.net/DragonBe Vote this presentation on http://joind.in/444 24

Hinweis der Redaktion

  1. convince audience this is BAD who knows / does this ???
  2. Versioning essentials
  3. PHPUnit is a separate talk (see Sebastian Bergmann)