Testarea proiectelor PHP cu Jenkins

Postat la Fri 02 January 2015 in tutoriale

Jenkins este un server utilizat la testarea si compilarea aplicatiilor software. Este un element cheie in sistemele CI (countinuous integration)

Mai jos sunt descrisi pasii necesari pentru instalarea serverului Jenkins + suport pentru testare PHP pe un server Ubuntu

apt-get install wget curl git subversion

Instalam Jenkins

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

Instalam module in jenkins via CLI

wget http://localhost:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin checkstyle cloverphp dry htmlpublisher
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin jdepend plot pmd violations git gitlab-plugin xunit

Instalam php5-cli si cateva module php:

apt-get install php5-cli php5-xsl php5-mysql php5-curl php5-dev php-pear

Pentru testarea codului PHP vom folosi cateva utilitare:

  • phploc - determinarea marimii si a structurii proiectului
pear config-set auto_discover 1
pear install pear.phpunit.de/phploc
  • pdepend - determina calitatea codului scris
pear channel-discover pear.pdepend.org
pear install pdepend/PHP_Depend
  • phpmd - cauta inadvertente in codul scris, functii prea complicate, parametrii si metode neutilizate
pear channel-discover pear.phpmd.org
pear install phpmd/PHP_PMD
  • PHP_CodeSnifer - ne indica incalcari ale diferitelor standarde/recomandari ale codului
pear install PHP_CodeSniffer
  • phpcpd - detecteaza codul duplicat in proiect
pear install pear.phpunit.de/phpcpd
  • phpDocumentor - genereaza documentatia codului din tag-urile phpdoc
wget -O /usr/local/bin/phpdoc http://phpdoc.org/phpDocumentor.phar
chmod +x /usr/local/bin/phpdoc
  • PHPUnit - frammework de testare a metodelor
wget -O /usr/local/bin/phpunit https://phar.phpunit.de/phpunit.phar
chmod +x /usr/local/bin/phpunit
  • phing - motorul utilizat pentru rularea tuturor utilitarelor de mai sus
pear channel-discover pear.phing.info
pear install phing/phing

Instalam template pentru proiectele PHP la Jenkins (va fi folsit ca proiect template)

curl https://raw.github.com/sebastianbergmann/php-jenkins-template/master/config.xml | java -jar
jenkins-cli.jar -s http://localhost:8080 create-job php-template

Creem un nou proiect prin copierea setarilor de la proiectul php-template. setam repository pentru codul sursa. iar ca comanda de build adaugam ca comanda shell:

phing -logger phing.listener.NoBannerLogger

In structura proiectului in folderul radacina trebuie sa creem un folder build gol al carui continut va fi ignorat de catre SVN/Git si adaugam fisierele atasate. Verificam si ajustam caile specificate in fisierele xml, si apoi comitem in repository. Testarea se incepe prin comanda Build now si in consola avem posibilitatea vizualizarii output-ul comenzilor. Fiecare build salvat va include rapoarte separate.

Surse:

http://programmingarehard.com/2013/09/26/zero-to-jenkins.html http://thoughtsandideas.wordpress.com/2013/08/24/setting-up-jenkins-continuous-integration-for-a-php-project-on-a-ma https://bitbucket.org/dadamssg/jenkinsdemo/src