Click here to load reader

Integration continue

  • View
    1.279

  • Download
    1

Embed Size (px)

Text of Integration continue

  • Intgration ContinueAvec JenkinsEric Hogue

  • Qu'est ce que l'intgration Continue?

  • Installer ant et Jenkinssudo apt-get install default-jdk antSuivre les instructions sur le site de jenkinsInstaller les pluginsGit PluginGithub PluginGreen Balls

  • Les outils

  • PHPUnit

  • Installationsudo apt-get install php5-xdebugphp-pearsudo pear upgrade pearsudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear channel-discover pear.symfony-project.comsudo pear install phpunit/PHPUnit

  • phpunit.xml

    .

  • build.xml

  • Plugin xUnitRsultats des tests unitaires

  • PluginClover PHPRapports sur la couverture des tests

  • PluginClover PHP

  • PHP Code Sniffer

  • sudo pear install PHP_CodeSnifferInstallation:build.xml

  • PluginCheckstyle

  • PHP Depend

  • sudo pear channel-discover pear.pdepend.orgsudo pear install pdepend/PHP_Depend-betaInstallation:build.xml

  • Plugin JDepend

  • PHP Mess Detector

  • sudo pear channel-discover pear.phpmd.orgsudo pear channel-discover pear.pdepend.orgsudo pear install --alldeps phpmd/PHP_PMDInstallation:build.xml

  • Plugin PMD

  • PHP Copy/Paste Detector

  • sudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear install phpunit/phpcpdInstallation:build.xml

  • Plugin DRY

  • Template for Jenkins Jobs for PHP ProjectsBySebastian Bergmann

  • http://jenkins-php.org/Tout ce qu'il faut pour un projet PHP

    Les plugins ncessairesUn fichier build.xmlUn template pour JenkinsPHP Project Wizard (PPW)

  • Autres possibilitsPhing/RakeAutres tests (Selenium, Behat)Dployement automatique/continue...

  • Questions?GitHub:https://github.com/EricHogue/SlideShare:http://www.slideshare.net/EricHogue

    Blog: http://erichogue.ca/Twitter: @ehogueEmail: phpquebec@erichogue.caLinkedIn http://ca.linkedin.com/in/ehogue

    Contact:

    Qui suis-je?- Dveloppe depuis 2001- Delphi, C++, C#, perl, PHP

    Mon histoire:- 8 ans dans la mme cie- Code vieux de 6 ans- Changements ont des effets imprvisibles- Se croise les doigts avants de dployer- autre cie, code sniffer, mais jamais excutDfinition:- Intgration frquente - Plus facile- Vrification automatique- Dtecte les problmes rapidement- Transparence

    Sun jdk?

    Ubuntu/Debian -> apt-getRedHat/Fedora -> yumWindows -> setup.exeMac -> .pkg- Configurer Git (svn, mercurial...)- Branche -> blank pour toutes- Poll SCM Every Minute- Configurer ant (maven, shell script, windows batch)- Notification, toujours au lead, plus celui qui brise le buildAnalyse dynamiqueAnalyse StatiqueAnalysise Dynamique

    Le plus important

    Tests unitaires

    Couverture de code avec Xdebugpear config-set auto_discover 1defaultbasediroutput

    build -> dependsAjouter tous les outils ici

    prepare/cleanCouverture par ligne

    Nombre = tests qui couvre ligneStandartsDocument que persone ne litFichier xml avec un standardProjet existant -> Check only new errors

    Click sur un fichier ammene a l'erreurOutil d'analyse statique

    Permet de dtecter des problemes potentiels

    ComplexitNomsLongueurCa - Afferent Couplings:The number of other packages that depend on this

    Ce - Efferent Couplings:The number of other packages that classes from this package depend upon

    Instability: Ratio of coupling(Ce / (Ce + Ca))

    Abstraction: Ratio of abstract and concrete classes(ac / (ac + cc))

    D => Distance

    V=> Volatility

    Hritage

    ANDC -> TheAverage Number of Derived ClassesAHH ->Average Hierarchy Height

    Taille et complexitCyclomatic Complexity

    CouplingFanout -> types rfrencCalls -> method calls

    Abstraction Instability ChartAbstract -> many depends on it -> keep stable

    Concrete -> many dependencies -> unstable

    Types:

    Code Size- Cyclomatic complexity- Mthode/classe trop longue- Trop de parametres

    Design- exit- eval- goto- coupling

    Naming- Nom variable/mthode court/long- Constructor name has class __construct

    Unsused code

    Changer--min-tokens def: 70--min-lines def: 5

    Don't Repeat YourselfMontrer JenkinsPlugins installer command lineAvec CI on peut maintenant avoir confiance en nos changements

Search related