L'intégration continue en PHP
Le but de cet article est d'expliquer comment mettre en place, à minima, un processus d'intégration continue en php, en se basant sur le serveur d'intégration continue Hudson, et le SCM git.Le processus d’intégration continue a pour objectif de vérifier que chaque mise à jour du code source ne génère pas de régressions ou d’anomalies. Le concept est très lié à la vision eXtreme Programming (XP).
Globalement, le serveur d'intégration continue scrute le dépôt de code (SVN, GIT, ...) à la recherche de modifications, et le cas échéant, il descend ces modifications, et lance une construction du projet.
Une fois le projet construit, il peut lancer plusieurs étapes de validation du code produit :
- Tests unitaires (junit, phpunit, ...)
- Tests fonctionnels
- Vérification de style (checkstyle)
- Vérification de duplication de code
- Génération de la documentation
Le serveur génère et/ou envoi un rapport contenant toutes les statistiques sur son build (tests échoués, qualité du code, ...)
Il peut même aller jusqu'à déployer l'application si tous les tests ont été passés avec succès.
Les éléments mis en place ici seront :
- Installation du server d'intégration continue Hudson, maintenant Jenkins
- Ecriture d'un build Phing pour automatiser nos tâches
- Génération automatique de la documentation API avec phpDocumentor
- Automatisation de test unitaires avec PHPUnit
- Vérification automatique de bonnes pratiques de développement avec PHP_CodeSniffer
- Détection de code dupliqué avec phpcpd
Présentation des outils
Hudson
Phing
Installation et utilisation
Pour l'installation, tout a été fait sur une debian squeeze, donc il vous faudra peut être adapté un peu selon votre distribution.Installation d'Hudson
On commence par installer java et daemon, dont a besoin hudsonapt-get install sun-java6-jre daemon wget -O /tmp/key http://hudson-ci.org/debian/hudson-ci.org.key apt-key add /tmp/key wget -O /tmp/hudson.deb http://hudson-ci.org/latest/debian/hudson.deb dpkg --install /tmp/hudson.deb
Attention, par défaut, sous squeeze, Hudson écoutera sur les adresses ipv6, pour contrer cela, il faut ajouter au fichier /etc/default/hudson :
JAVA_ARGS="-Djava.net.preferIPv4Stack=true"Voilà, Hudson est maintenant installé, et accessible via http://localhost:8080
On va tout de suite installer les plugins dont on va avoir besoin par a suite, via la page "plugins" d'Hudson.
- Checkstyle
- Clover
- DRY
- Green Balls (Uniquement pour avoir du vert au lieu du bleu en cas de succès)
- Git
- PHPUnit
Ecriture du code
Vous pouvez télécharge ce petit morceau de code qui implémente très succinctement une gestion de compte bancaire, avec les tests unitaires adéquats.Phing
Afin de pouvoir permettre à Hudson de construire notre projet, nous allons écrire le script phing qui fera toutes les étapes décrites précédemment :Installation du serveur git
N'importe quel serveur git fera la faire, vous pouvez par exemple suivre l'installation de gitoliteIl faut faire en sorte que Hudson puisse descendre le projet git, on va donc ajouter sa clef publique au serveur git.
Pour la générer, avec le compre hudson :
ssh-keygen -t rsaIl faut ensuite ajouter la clef à la liste des clefs autorisées sur le serveur git
su - gitadmin cd gitolite-admin echo "..." > keydir/hudson.pub git add keydir/hudson.pubEt autoriser hudson à accéder au projet :
vi conf/gitolite.conf repo bank RW = gitadmin R = hudson git commit -m "hudson" git pushVoilà, maintenant Hudson peut enfin accéder aux sources.
Création du build hudson
On a maintenant toutes les clefs pour créer notre projet Hudson.Rendez-vous donc sur http://localhost:8080 pour créer le build.
Ensuite, on va dire à Hudson comment récupérer les sources du projet :
Puis fournir la commande qui permettra de lancer le build phing :
Et enfin la configuration des rapports à produire grâce aux différents plugins installés :
Voilà, la configuration est à peu près terminé, on peut maintenant lancer le build et voir la qualité du code produit :).
Si tout se passe bien vous devriez avoir un bel écran plein de vert :
Aucun commentaire:
Enregistrer un commentaire