Intégration continue d'un projet PHP avec PHPUnit et Jenkins

PHPUnit est un framework de tests unitaires open source dédié au langage de programmation PHP. Créé par Sebastian Bergmann.

Pour faire suite au billet Installation d'eZ Publish 5 sur une machine virtuelle Ubuntu Server 14.04 avec Nginx et PHP-FPM , et pour améliorer l'environnement de développement je vais installer PHPunit et Jenkins pour faire de l'intégration continue.

PHPUnit

Les tests unitaires permettent (entre autres) de tester que les différentes évolutions apportées au code source ne produisent pas de régression. L'outil de réference dans le monde PHP pour executer des tests unitaires est PHPUnit.

Installation de PHPUnit sur Ubuntu

wget https://phar.phpunit.de/phpunit.phar
$ chmod +x phpunit.phar
$ sudo mv phpunit.phar /usr/local/bin/phpunit

Pour tester que tout est Ok , executer la commande phpunit --version

Si vous avez un affichage du genre : PHPUnit 4.2.4 by Sebastian Bergmann.
c'est que tout est Ok.

Voici un bon tutoriel pour commencer à faire vos premiers tests unitaires : Getting Started With Phpunit

Automatiser et superviser

Pour automatiser les tests et construire les packages à livrer sur les différents serveurs de Prod , recette ... et monitorer le tout, il faut ajouter à la plateforme les outils suivants : Ant et Jenkins.
Pour comprendre qui fait quoi et comment, c'est par ici : Continuous Integration With Jenkins

Installation Ant

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo apt-get -u install ant

Installation Jenkins

wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Plus de détails ici : Installing Jenkins On Ubuntu

Pour initier votre premier Build voici un tutoriel intéressant :  http://www.sitepoint.com/continuous-integration-with-jenkins-2/

Maintenant on est capable de placer un projet PHP en intégration continue.

Pour plus de détail concernant l'intégration continue d'un projet en PHP je vous invite à consulter le Blog de Pascal Martin

On y trouve pas mal de conseils, par exemple :

  • Plus les outils d’analyse de qualité arrivent tôt, plus il sera facile de former vos équipes, de les sensibiliser à l’importance de la qualité, et de tenir compte de ces retours
  • La plate-forme d’intégration continue ne doit pas être vue comme un ennemi : un test qui échoue, ce n’est pas la fin du monde; au contraire : c’est un problème potentiel identifié rapidement, avant livraison de l’application en production, avant de ne devenir un problème réel ; c’est donc une aide qui est apportée à toute l’équipe.
  • Si vous utilisez un Framework (Zend Framework, symfony, …), ou construisez autour d’un logiciel existant (Drupal, Magento, …) : ne perdez pas de temps à jouer les tests de ces outils, ni à construire leur documentation d’API, excluez les répertoires concernés.