Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction à l'intégration continue en PHP

653 views

Published on

Talk given at PHP Québec on August 6 2015

L'intégration continue permet d'exécuter automatiquement les tests à chaque fois que du code est poussé.

Nous allons voir les types de tests qu'un serveur d'intégration continue peut exécuter. Comment interpréter les résultats de ces outils. Comment créer le script de ‘build'. Et comment configurer Jenkins pour qu'il exécute le build et affiche les rapport produits.

Published in: Technology
  • Be the first to like this

Introduction à l'intégration continue en PHP

  1. 1. Introduction à l’intégration continue avec Jenkins PHP Québec Août 2015 Eric Hogue @ehogue erichogue.ca 1
  2. 2. Wikipedia ensemble de pratiques [...] consistant à vérifier à chaque modification [...] que le résultat des modifications ne produit pas de régression dans l'application développée http://fr.wikipedia.org/wiki/Int%C3%A9gration_continue 2
  3. 3. Assemblage automatique 3
  4. 4. 4
  5. 5. Contrôle automatique 5
  6. 6. Rapide 6
  7. 7. Intégration continue 7
  8. 8. 8 Outils
  9. 9. 9
  10. 10. 10
  11. 11. Moteurs de production (Build Tool) 11
  12. 12. Résultats 12
  13. 13. Rapports 13
  14. 14. Rapports 14
  15. 15. Tendances 15
  16. 16. Extensions 16
  17. 17. Chuck Norris 17
  18. 18. Prêt 18
  19. 19. 19
  20. 20. Projet démo https://github.com/EricHogue/CIPresentation 20
  21. 21. 21 http://192.168.56.101:8080/
  22. 22. 22
  23. 23. 23
  24. 24. 24
  25. 25. Extensions ● Git ● Phing ● Green Balls ● ChuckNorris 25
  26. 26. 26
  27. 27. 27
  28. 28. 28
  29. 29. Emplacement du code 29
  30. 30. Quand assembler 30
  31. 31. Moteurs de production 31
  32. 32. Phing 32
  33. 33. <project default="build"> <property name="builddir" value=". /build" override="true" /> </project> build.xml 33
  34. 34. <target name="build" depends="prepare" description="Build the project"> </target> build.xml - build target 34
  35. 35. Comment assembler 35
  36. 36. Comment assembler 36
  37. 37. 37
  38. 38. Outils PHP 38
  39. 39. 39
  40. 40. Composer 40
  41. 41. { "require-dev": { "phpunit/phpunit": "4.3.*" } } composer.json 41
  42. 42. 42
  43. 43. <target name="phpunit" depends="prepare"> <exec command="./vendor/bin/phpunit -c phpunitCI.xml" checkreturn="true" /> </target> build.xml - PHPUnit 43
  44. 44. Échec 44
  45. 45. Publier le rapport PHPUnit 45
  46. 46. Publier le rapport PHPUnit 46
  47. 47. 47
  48. 48. 48
  49. 49. Publier la couverture du code 49
  50. 50. 50
  51. 51. 51
  52. 52. 52
  53. 53. Tests statiques 53
  54. 54. PHP_CodeSniffer 54
  55. 55. Publier le rapport Checkstyle 55
  56. 56. 56
  57. 57. 57
  58. 58. 58
  59. 59. PHP Depend 59
  60. 60. Publier JDepend 60
  61. 61. 61
  62. 62. Classes 62
  63. 63. Couplage 63 Couplage afférent Couplage efférent
  64. 64. Abstraction AC / TC 64
  65. 65. Instabilité Ce / (Ce + Ca) 65
  66. 66. Ca: 0 Ce: 3 Ce / (Ce + Ca) 3 / (3 + 0) = 1 66
  67. 67. Ca: 3 Ce: 0 Ce / (Ce + Ca) 0 / (0 + 3) = 0 67
  68. 68. Distance Idealized line → A + I = 1 68
  69. 69. Abstraction Instability Chart 69
  70. 70. Overview Pyramid - Héritage 70 Average Number of Derived Classes Average Hierarchy Height
  71. 71. Overview Pyramid - Grandeur et complexité 71
  72. 72. public function test() { if ($a) { ... } elseif ($b) { ... } foreach ($c as $d) { if ($e) { } else { } } } 1 2 3 4 5 72
  73. 73. Overview Pyramid - Size And Complexity 73
  74. 74. Overview Pyramid - Couplage 74
  75. 75. 75
  76. 76. PHP Mess Detector 76
  77. 77. Jeux de règles 77
  78. 78. Publier PMD 78
  79. 79. 79
  80. 80. 80
  81. 81. 81
  82. 82. PHP Copy Paste Detector 82
  83. 83. Publier l’analyse du code dupliqué 83
  84. 84. 84
  85. 85. Violations 85
  86. 86. 86
  87. 87. 87
  88. 88. 88
  89. 89. 89
  90. 90. Notifications courriel 90
  91. 91. 91
  92. 92. Plus de notifications 92
  93. 93. 93
  94. 94. Avantages 94
  95. 95. Rétroaction rapide 95
  96. 96. Mesures 96
  97. 97. Automatisation 97
  98. 98. Confiance 98
  99. 99. https://github.com/EricHogue/CIPresentation Commentaires: https://joind.in/14952 twitter: @ehogue PHP Mentoring: http://phpmentoring.org/ 99
  100. 100. ● TrafficJam.jpg - Thomanication - https://www.flickr.com/photos/thomanication/6216702247 ● is_it_worth_the_time.png - xkcd - http://xkcd.com/1205/ ● LionSelfie.jpg - Silke Remmery - https://www.flickr.com/photos/silkeremmery/15856169578/in/faves-96579472@N07/ ● RacingDownTheRunway.jpg - Philipp Lücke - https://www.flickr.com/photos/philippluecke/6993495094/in/faves-96579472@N07/ ● PreciousTreasure.jpg - Dave Sutherland - https://www.flickr.com/photos/raptortheangel/12786162594/in/faves-96579472@N07/ ● ComputerBug.jpg - Brendan Dolan-Gavitt - https://www.flickr.com/photos/moyix/2352619003/in/faves-96579472@N07/ ● CatchItIfYouCan.jpg - Tim Mowrer - https://www.flickr.com/photos/mekin/281791343/in/faves-96579472@N07/ ● CILights.jpg - Jan Krutisch - https://www.flickr.com/photos/jankrutisch/4272142306/in/photostream/ ● ConductorFrederikMagleConductingASymphonyOrchestra10.jpg - Frederik Magle Music - https://www.flickr. com/photos/frederikmagle/7026769687/in/photostream/ ● Ready.jpg - amanda tipton - https://www.flickr.com/photos/demandaj/6789626120 ● StaticWallpaper.jpg - James Spinks - https://www.flickr.com/photos/realjimbob/13270099 ● DynamicEarthCME.jpg - NASA Goddard Space Flight Center - https://www.flickr.com/photos/gsfc/7402440272 ● Containers.jpg - www.GlynLowe.comhttps://www.flickr.com/photos/batega/2056949264 - https://www.flickr. com/photos/glynlowe/10921733615 ● MetricMania.jpg - Josep Ma. Rosell - https://www.flickr.com/photos/batega/2056949264 ● CheaperByTheYard.jpg - Bill Smith - https://www.flickr.com/photos/byzantiumbooks/16173360807 ● IHateWhenSomeoneLeavesaMessintheBathroom.jpg - e_monk - https://www.flickr.com/photos/e_monk/5931790591 ● FadeToGrey.jpg - Andreas Levers - https://www.flickr.com/photos/96dpi/2571056264 ● LCConversion.jpg - Ginny - https://www.flickr.com/photos/ginnerobot/2548843369 ● NotSoMiniBoot.jpg - Eric E Castro - https://www.flickr.com/photos/ecastro/6195349092 ● LEGOShip.jpg - Andrey Belenko - https://www.flickr.com/photos/belenko/4295897526 ● GrungeWarningSignDoNotReadThisSign.jpg - Nicolas Raymond - https://www.flickr.com/photos/80497449@N04/7417352980 ● Notifications.jpg - Ben Schumin - http://www.flickr.com/photos/schuminweb/9806474636/ ● MoreBrokenWindows.jpg - brainflakes. - https://www.flickr.com/photos/brainflakes/2763231289 ● Fragile.jpg - Eye - the world through my I - https://www.flickr.com/photos/ccpixel/ ● BalancingAct.jpg - Colin Harris ADE - https://www.flickr.com/photos/classblog/5136926303 ● Escalator.jpg - Adam Lederer - https://www.flickr.com/photos/elmada/2466685791 ● ZombieWeb.jpg - GollyGforce - Living My Worst Nightmare - https://www.flickr.com/photos/see-through-the-eye-of-g/8218600295 ● LegoMicroTrophy.jpg - David Luders - https://www.flickr.com/photos/42988571@N08/15965163069 ● GearWork2.jpg - Curious Expeditions - https://www.flickr.com/photos/curiousexpeditions/489992128 ● BobTheBuilder.jpg - clement127 - https://www.flickr.com/photos/clement127/15943249419 ● RulesRulesRules.jpg - Ricardo Liberato - https://www.flickr.com/photos/liberato/2292651755 100

×