Intégration continue avec Jenkins et PHP sous Windows

Noter ce cours :

Liens sponsorisés :

Intégration continue

Jenkins (auparavant appelé Hudson) est un outil d'intégration continue écrit en langage Java. L'intégration continue consiste à vérifier, à chaque changement du code, que l'application en cours de développement ne subit pas de régressions, mais vous permet également de vérifier la qualité du code.

Cet outil (seul ou utilisé conjointement avec d'autres) dispose de nombreux plugins et vous permet notamment d'exécuter les tâches suivantes :

Installation des outils PHP pour Jenkins

Afin que notre projet PHP soit correctement analysé et intégré à Jenkins, il y a certaines commandes à exécuter. Cliquez sur le bouton démarrer, puis, dans la zone de recherche, tapez cmd puis appuyez sur la touche Entrée. Tapez successivement l'ensemble des commandes ci-après. Vous devez avoir Pear d'installé. Si ce n'est pas le cas, téléchargez le fichier http://pear.php.net/go-pear.phar puis placez-le dans le répertoire pear de Wamp (dans mon cas, cela donne E:\wamp\bin\php\php5.4.16) puis rendez-vous dans ce répertoire en ligne de commande, et exécutez la commande suivante : php -d phar.require_hash=0 go-pear.phar. Cela devrait être OK !

Exécutez maintenant l'ensemble des commandes suivantes :

Installation de Jenkins sous Windows

Maintenant que PHP est configuré comme il faut, nous allons pouvoir installer Jenkins. Pour installer Jenkins sous Windows (avec Wamp), rendez-vous sur le lien Miroirs Jenkins pour choisir la version que vous souhaitez. Si vous souhaitez télécharger la dernière version stable, rendez-vous ici : Télécharger Jenkins stable (Windows). Décompressez ensuite le fichier zip. Celui-ci est composé de deux fichiers : un fichier setup.exe et un fichier à l'extension .msi.

Exécutez le fichier setup.exe. L'assistant d'installation s'ouvre. Cliquez une première fois sur Next. Vous avez alors la possibilité de choisir le répertoire d'installation de Jenkins :

Lorsque vous aurez choisi le répertoire de destination, cliquez une fois sur Next, puis sur Install. Si Windows vous affiche un message vous prévenant que le programme jenkins.msi va effectuer des modifications et a besoin de votre accord, répondez par Oui. La procédure d'installation de Jenkins est alors en marche. Lorsque celle-ci est terminée, cliquez sur Finish.

Jenkins ouvre alors votre navigateur à l'adresse suivante : http://localhost:8080. Une page identique à celle-ci s'affiche :

L'attente peut être longue (plusieurs minutes). Si l'affichage de la page est indisponible (que vous n'avez même pas la page ci-dessus), vérifiez qu'aucun service n'écoute sur le port 8080, puis rafraîchissez la page quelques secondes après avoir arrêté le service correspondant.

Création du projet Jenkins

Téléchargez le fichier template de base qui nous servira pour la suite en cliquant sur le lien suivant : PHP Jenkins Template. Dézippez le contenu de ce fichier dans le répertoire "jobs" de Jenkins (si vous avez installé Jenkins dans le répertoire par défaut, vous copierez le contenu du zip ici : C:\Program Files\Jenkins\jobs. Votre répertoire Jobs doit contenir maintenant un unique dossier nommé php-jenkins-template-master. Renommez ce dossier en php-jenkins-template.

Il est nécessaire de relancer le service jenkins. Pour ce faire, cliquez sur le bouton démarrer, puis, dans la zone de recherche, tapez services.msc et validez en appuyant sur Entrée. Recherchez le service nommé jenkins. Quand vous l'aurez trouvé, effectuez un clic avec le bouton droit de la souris puis cliquez sur Arrêter. Une fois le service complètement arrêté, refaites un clic droit puis choisissez cette fois Démarrer.

Lorsque Jenkins a fini de générer la page, vous allez vous retrouver devant l'écran suivant :

Si vous en êtes à la même étape, c'est que tout est OK ! Vous pouvez alors passer à la suite.

Configuration de Jenkins pour PHP et Wamp

Cliquez sur le lien (en haut à gauche) intitulé Nouveau job pour démarrer. En PHP, vous aurez la plupart du temps à lancer des scripts pour effectuer des tests et génération de builds. Un build est un projet "compilé" (que l'on peut assimiler à un package) stocké sur le serveur Jenkins. En général, un build correspond à une version compilée de votre programme. Dans le cas d'un site web dynamique PHP, le langage n'étant pas compilé, vous pouvez comparer un build à une version figée de votre site à l'instant de création du build.

Donnez un nom à votre projet. Nous allons nous baser sur le template téléchargé plus haut, choisissez l'option Copier un job existant et tapez dans la zone php puis cliquez sur php-jenkins-template.

Contrôlez que vous ayez bien les mêmes informations que sur la capture suivante, puis cliquez sur Sauver :

Téléchargez jenkins-cli.jar à l'adresse suivante : http://localhost:8080/jnlpJars/jenkins-cli.jar puis enregistrez-le dans le répertoire racine de jenkins. Ouvrez une console (cmd) puis placez-vous dans le répertoire jenkins. Exécutez ensuite la commande suivante : java -jar jenkins-cli.jar -s http://localhost:8080. Vous devriez avoir un long message comme ceci :

Téléchargez Apache ANT (lien direct vers le zip version 1.9.3 : Apache ANT 1.9.3) puis décompressez ce zip dans le répertoire dans le répertoire bin de Wamp (cela donne pour mon exemple E:\wamp\bin). Vous devez avoir dans le répertoire bin de Wamp, le répertoire d'apache Ant.

Définissez de nouvelles variables d'environnement. Pour ce faire, effectuez un clic avec le bouton droit sur l'icône Ordinateur (située sur le bureau), puis cliquez sur Propriétés, puis sur Paramètres système avancés et enfin sur le bouton Variables d'environnement.

Dans la zone Variables système, cliquez sur le bouton Nouvelle, puis créez les deux variables suivantes successivement :

Fermez toutes les options Windows puis retournez dans Jenkins. Cliquez à gauche sur Administrer Jenkins puis sur Configurer le système. Vous vous retrouvez devant un écran ressemblant à celui-ci :

Cochez la case Variables d'environnement puis cliquez sur le bouton Ajouter qui apparait à droite de la mention Liste des paires clé-valeur.

Dans la zone Nom indiquez la valeur suivante : PATH puis renseignez dans la valeur la même valeur que la variable d'environnement Windows nommée PATH et vue précédemment dans ce tutoriel, puis cliquez sur le bouton Enregistrer.

Arrêtez puis relancez le service Jenkins.

Téléchargez le fichier build.xml puis placez-le a la racine de votre projet PHP. Si vous analysez bien ce fichier, vous y trouverez les traces des commandes qui seront exécutées par Jenkins. Vous pouvez d'ailleurs les exécuter une par une dans une console pour voir le résultat !

Téléchargez le fichier phpmd.xml puis placez-le dans le répertoire build de votre projet PHP. Si le répertoire build n'existe pas, créez-le.

Téléchargez le fichier phpcs.xml puis placez-le dans le répertoire build de votre projet PHP.

Téléchargez le fichier phpunit.xml puis placez-le dans le répertoire tests de votre projet PHP. Si ce répertoire n'existe pas, créez-le à la racine de votre projet.

Il vous faut modifier le répertoire de travail pour qu'il pointe sur le répertoire racine de votre projet. Pour ce faire, dans Jenkins, cliquez à gauche sur Configurer lorsque vous vous situez dans votre projet. Cliquez sur le bouton Avancé puis renseignez le répertoire racine de votre projet (dans mon cas : E:\wamp\www\testjenkins).

Lancement du build

Rendez-vous dans votre projet, puis cliquez sur Lancer un build. Patientez quelques minutes (en fonction de la taille de votre projet).

Cliquez sur le build puis, dans le menu à gauche, cliquez sur Sortie console. Vous verrez ce qu'il se passe lorsque votre build sera généré.

Vous allez maintenant pouvoir voir les résultats de votre code. Pour ce faire, vous avez tout d'abord accès à plusieurs choses situées dans le répertoire build :

Documentation générée par PHPDoc

Dans le répertoire api se trouve l'ensemble de la documentation de votre projet générée automatiquement par PHPDoc. Vous pouvez la consulter dans votre navigateur en vous rendant à l'adresse de votre projet suivi de /build/api. (cela donne chez moi ceci : http://localhost/testjenkins/build/api) :

Documentation PHPDOC

Rapport d'erreurs généré par Code Browser

Dans le répertoire code-browser se trouve une page web recensant l'ensemble des erreurs (faibles ou critiques) de vos fichiers PHP :

Rapport d'erreurs Code Browser

Les erreurs faibles (warning) apparaissent en bleu, les erreurs fortes en rouge. Vous pouvez via l'arborescence de gauche cliquer sur les répertoires et fichiers incriminés pour consulter le détail des erreurs :

Rapport d'erreurs Code Browser

Diagrammes de dépendances, stabilité et pyramide générés par PHP_Depend

Dans le répertoire pdepend se trouvent deux fichiers .svg (que vous pouvez directement ouvrir avec votre navigateur Web pour peu qu'il supporte le SVG).

La première image se nomme dependencies.svg et est constituée d'un graphique à deux axes :

Graphe de dépendances PHP_Depend

Le cas idéal serait celui oû vos fichiers se situeraient près de la ligne verte. En pratique, qu'ils soient en dessous est déjà une bonne chose. Pour plus d'informations, vous pouvez consulter le site PHP Depend.

La seconde image se nomme overview-pyramid.svg. Ouvrez-la de la même manière :

Elle est un peu plus complexe à analyser. Je vous encourage à consulter ce lien http://manuel-pichler.de/archives/31-Using-the-Overview-Pyramid.html si vous souhaitez plus d'informations (en anglais).

Ce tutoriel touche à sa fin. Vous devriez voir cet aperçu lorsque vous consultez le dernier build de votre projet :

Vous avez aimé cet article intitulé Intégration continue avec Jenkins et PHP sous Windows ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels