Intégration Continue Avec Jenkins Eric Hogue
Qu'est ce que l'intégration Continue?
Installer ant et Jenkins sudo apt-get install default-jdk ant Suivre les instructions sur le site de jenkins Installer les...
 
Les outils
PHPUnit
Installation sudo apt-get install php5-xdebug php-pear sudo pear upgrade pear sudo pear channel-discover pear.phpunit.de s...
phpunit.xml <ul><li><phpunit bootstrap=&quot;Tests/bootstrap.php&quot;> </li></ul><ul><li>     <testsuites> </li></ul><ul>...
build.xml <ul><li><project name=&quot;CIDemo&quot; default=&quot;build&quot; basedir=&quot;.&quot;> </li></ul><ul><li>    ...
Plugin xUnit <ul><li>Résultats des tests unitaires </li></ul>
Plugin Clover PHP <ul><li>Rapports sur la couverture des tests </li></ul>
Plugin Clover PHP
PHP Code Sniffer
sudo pear install PHP_CodeSniffer Installation:  build.xml <target name=&quot;phpcs&quot;> <exec executable=&quot;phpcs&qu...
Plugin Checkstyle
 
PHP Depend
sudo pear channel-discover pear.pdepend.org sudo pear install pdepend/PHP_Depend-beta Installation:  build.xml      <targe...
Plugin JDepend
 
PHP Mess Detector
sudo pear channel-discover pear.phpmd.org sudo pear channel-discover pear.pdepend.org sudo pear install --alldeps phpmd/PH...
Plugin PMD
PHP Copy/Paste Detector
sudo pear channel-discover pear.phpunit.de sudo pear channel-discover components.ez.no sudo pear install phpunit/phpcpd In...
Plugin DRY
Template for Jenkins Jobs for PHP Projects By Sebastian Bergmann
http://jenkins-php.org/ <ul><li>Tout ce qu'il faut pour un projet PHP </li></ul><ul><ul><li>  Les plugins nécessaires </li...
Autres possibilités <ul><ul><li>Phing/Rake </li></ul></ul><ul><ul><li>Autres tests (Selenium, Behat) </li></ul></ul><ul><u...
Questions? <ul><ul><li>GitHub: https://github.com/EricHogue/ </li></ul></ul><ul><ul><li>SlideShare: http://www.slideshare....
Upcoming SlideShare
Loading in …5
×

Integration continue

1,570 views

Published on

Présentation sur l'intégration continue. Présenté à PHPQuebec le 2 novembre 2011

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,570
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Qui suis-je?  - Développe depuis 2001 - Delphi, C++, C#, perl, PHP Mon histoire: - 8 ans dans la même cie - Code vieux de 6 ans - Changements ont des effets imprévisibles - Se croise les doigts avants de déployer - autre cie, code sniffer, mais jamais exécuté
  • Définition: - Intégration fréquente     - Plus facile - Vérification automatique - Détecte les problèmes rapidement - Transparence
  • Sun jdk? Ubuntu/Debian -&gt; apt-get RedHat/Fedora -&gt; yum Windows -&gt; setup.exe Mac -&gt; .pkg
  • - Configurer Git (svn, mercurial...) - Branche -&gt; blank pour toutes - Poll SCM Every Minute - Configurer ant (maven, shell script, windows batch) - Notification, toujours au lead, plus celui qui brise le build
  • Analyse dynamique Analyse Statique
  • Analysise Dynamique Le plus important Tests unitaires Couverture de code avec Xdebug
  • pear config-set auto_discover 1
  • default basedir output build -&gt; depends  Ajouter tous les outils ici prepare/clean
  • Couverture par ligne
  • Nombre = tests qui couvre ligne
  • Standarts Document que persone ne lit
  • Fichier xml avec un standard
  • Projet existant -&gt; Check only new errors Click sur un fichier ammene a l&apos;erreur
  • Outil d&apos;analyse statique Permet de détecter des problemes potentiels Complexité Noms Longueur
  • Ca - 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 =&gt; Distance V=&gt; Volatility Héritage ANDC -&gt; The  Average Number of Derived Classes AHH -&gt; Average Hierarchy Height   Taille et complexité Cyclomatic Complexity Coupling Fanout -&gt; types référencé Calls -&gt; method calls Abstraction Instability Chart Abstract -&gt; many depends on it -&gt; keep stable Concrete -&gt; many dependencies -&gt; unstable
  • Types:  Code Size - Cyclomatic complexity - Méthode/classe trop longue - Trop de parametres Design - exit - eval - goto - coupling Naming - Nom variable/méthode court/long - Constructor name has class &lt;&gt; __construct Unsused code
  • Changer  --min-tokens     def: 70 --min-lines         def: 5
  • Don&apos;t Repeat Yourself
  • Montrer Jenkins
  • Plugins installer command line
  • Avec CI on peut maintenant avoir confiance en nos changements
  • Integration continue

    1. 1. Intégration Continue Avec Jenkins Eric Hogue
    2. 2. Qu'est ce que l'intégration Continue?
    3. 3. Installer ant et Jenkins sudo apt-get install default-jdk ant Suivre les instructions sur le site de jenkins Installer les plugins <ul><ul><li>Git Plugin </li></ul></ul><ul><ul><li>Github Plugin </li></ul></ul><ul><ul><li>Green Balls </li></ul></ul>
    4. 5. Les outils
    5. 6. PHPUnit
    6. 7. Installation sudo apt-get install php5-xdebug php-pear sudo pear upgrade pear sudo pear channel-discover pear.phpunit.de sudo pear channel-discover components.ez.no sudo pear channel-discover pear.symfony-project.com sudo pear install phpunit/PHPUnit
    7. 8. phpunit.xml <ul><li><phpunit bootstrap=&quot;Tests/bootstrap.php&quot;> </li></ul><ul><li>     <testsuites> </li></ul><ul><li>         <testsuite name=&quot;Demo&quot;> </li></ul><ul><li>             <directory>.</directory> </li></ul><ul><li></testsuite> </li></ul><ul><li>     </testsuites> </li></ul><ul><li>     <logging> </li></ul><ul><li>         <log type=&quot;coverage-html&quot;  </li></ul><ul><li>             target=&quot;build/phpunit/html&quot; title=&quot;CIDemo&quot; </li></ul><ul><li>             charset=&quot;UTF-8&quot; yui=&quot;true&quot; highlight=&quot;true&quot; </li></ul><ul><li>             lowUpperBound=&quot;35&quot; highLowerBound=&quot;70&quot; /> </li></ul><ul><li>         <log type=&quot;coverage-clover&quot; target=&quot;build/phpunit/clover.xml&quot;/> </li></ul><ul><li>         <log type=&quot;junit&quot; target=&quot;build/phpunit/junit.xml&quot;  </li></ul><ul><li>             logIncompleteSkipped=&quot;false&quot; /> </li></ul><ul><li>     </logging> </li></ul><ul><li></phpunit> </li></ul>
    8. 9. build.xml <ul><li><project name=&quot;CIDemo&quot; default=&quot;build&quot; basedir=&quot;.&quot;> </li></ul><ul><li>     <property name=&quot;output&quot; location=&quot;${basedir}/build/&quot; /> </li></ul><ul><li>     <target name=&quot;build&quot; depends=&quot;prepare,phpunit&quot;> </li></ul><ul><li>     </target> </li></ul><ul><li>     <target name=&quot;prepare&quot; depends=&quot;clean&quot;> </li></ul><ul><li>         <mkdir dir=&quot;${output}&quot; /> </li></ul><ul><li>     </target> </li></ul><ul><li>     <target name=&quot;clean&quot;> </li></ul><ul><li>         <delete dir=&quot;${output}&quot; /> </li></ul><ul><li>     </target> </li></ul><ul><li>     <target name=&quot;phpunit&quot;> </li></ul><ul><li>         <exec executable=&quot;phpunit&quot; failonerror=&quot;true&quot; /> </li></ul><ul><li>     </target> </li></ul><ul><li></project> </li></ul>
    9. 10. Plugin xUnit <ul><li>Résultats des tests unitaires </li></ul>
    10. 11. Plugin Clover PHP <ul><li>Rapports sur la couverture des tests </li></ul>
    11. 12. Plugin Clover PHP
    12. 13. PHP Code Sniffer
    13. 14. sudo pear install PHP_CodeSniffer Installation:  build.xml <target name=&quot;phpcs&quot;> <exec executable=&quot;phpcs&quot;> <arg line=&quot;--report=checkstyle --report-file=${output}/phpcs/checkstyle.xml --standard=Zend ${basedir}&quot; /> </exec> </target>
    14. 15. Plugin Checkstyle
    15. 17. PHP Depend
    16. 18. sudo pear channel-discover pear.pdepend.org sudo pear install pdepend/PHP_Depend-beta Installation:  build.xml      <target name=&quot;pdepend&quot;>          <exec executable=&quot;pdepend&quot;>              <arg line=&quot;                  --jdepend-xml=${output}/pdepend/jdepend.xml --jdepend-chart=${output}/pdepend/dependencies.svg                  --overview-pyramid=${output}/pdepend/overview-pyramid.svg --ignore=Tests/ .      &quot; />          </exec>      </target>
    17. 19. Plugin JDepend
    18. 21. PHP Mess Detector
    19. 22. sudo pear channel-discover pear.phpmd.org sudo pear channel-discover pear.pdepend.org sudo pear install --alldeps phpmd/PHP_PMD Installation:  build.xml <target name=&quot;phpmd&quot;>      <exec executable=&quot;phpmd&quot;> <arg line=&quot;. xml               codesize,unusedcode,naming,design               --reportfile ${output}/phpmd/messdetector.xml               --exclude Tests/&quot;           />      </exec> </target>
    20. 23. Plugin PMD
    21. 24. PHP Copy/Paste Detector
    22. 25. sudo pear channel-discover pear.phpunit.de sudo pear channel-discover components.ez.no sudo pear install phpunit/phpcpd Installation:  build.xml <target name=&quot;phpcpd&quot; depends=&quot;prepare&quot;>      <exec executable=&quot;phpcpd&quot;>          <arg line=&quot; --log-pmd ${output}/phpcpd/phpcpd.xml               --min-tokens 30 .&quot; />      </exec> </target>
    23. 26. Plugin DRY
    24. 27. Template for Jenkins Jobs for PHP Projects By Sebastian Bergmann
    25. 28. http://jenkins-php.org/ <ul><li>Tout ce qu'il faut pour un projet PHP </li></ul><ul><ul><li>  Les plugins nécessaires </li></ul></ul><ul><ul><li>  Un fichier build.xml </li></ul></ul><ul><ul><li>  Un template pour Jenkins </li></ul></ul><ul><ul><li>  PHP Project Wizard (PPW) </li></ul></ul>
    26. 29. Autres possibilités <ul><ul><li>Phing/Rake </li></ul></ul><ul><ul><li>Autres tests (Selenium, Behat) </li></ul></ul><ul><ul><li>Déployement  automatique/continue </li></ul></ul><ul><ul><li>  ... </li></ul></ul>
    27. 30. Questions? <ul><ul><li>GitHub: https://github.com/EricHogue/ </li></ul></ul><ul><ul><li>SlideShare: http://www.slideshare.net/EricHogue </li></ul></ul><ul><ul><li>Blog: http://erichogue.ca/ </li></ul></ul><ul><ul><li>Twitter: @ehogue </li></ul></ul><ul><ul><li>Email: phpquebec@erichogue.ca </li></ul></ul><ul><ul><li>LinkedIn http://ca.linkedin.com/in/ehogue </li></ul></ul>Contact:

    ×