PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Progi1984 : Automatiser vos tâches sur un projet PHP avec Phing

lundi 11 novembre 2013 à 09:30

Comme nous l’avons vu précédemment, il est possible d’assurer la qualité de votre projet PHP via Travis-CI. Mais comment faire en local sans Internet ? Phing est la solution pour lancer des tâches en local.

Phing

Installation de Phing

On ajoute le channel PEAR de Phing :

[user@computer ~]# pear channel-discover pear.phing.info
Adding Channel "pear.phing.info" succeeded
Discovery of channel "pear.phing.info" succeeded

On ajoute différents channels pour PEAR :

[user@computer ~]# pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

[user@computer ~]# pear channel-discover pear.pdepend.org
Adding Channel "pear.pdepend.org" succeeded
Discovery of channel "pear.pdepend.org" succeeded

[user@computer ~]# pear channel-discover pear.phpmd.org
Adding Channel "pear.phpmd.org" succeeded
Discovery of channel "pear.phpmd.org" succeeded

[user@computer ~]# pear channel-discover pear.phpdoc.org
Adding Channel "pear.phpdoc.org" succeeded
Discovery of channel "pear.phpdoc.org" succeeded

[user@computer ~]# pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

[user@computer ~]# pear channel-discover pear.netpirates.net
Adding Channel "pear.netpirates.net" succeeded
Discovery of channel "pear.netpirates.net" succeeded

[user@computer ~]# pear channel-discover pear.symfony.com
Adding Channel "pear.symfony.com" succeeded
Discovery of channel "pear.symfony.com" succeeded

A ce moment-là, on installe Phing via PEAR :

[user@computer ~]# pear install phing/phing
WARNING: "pear/PEAR_PackageFileManager" is deprecated in favor of "pear/PEAR_PackageFileManager2"
Did not download optional dependencies: phing/phingdocs, pear/VersionControl_SVN, pear/VersionControl_Git, phpunit/PHPUnit, phpunit/PHP_CodeCoverage, pecl/Xdebug, pear/PEAR_PackageFileManager, pear/Services_Amazon_S3, pear/HTTP_Request2, pdepend/PHP_Depend, phpmd/PHP_PMD, phpunit/phpcpd, phpunit/phploc, phpdoc/phpDocumentor, pear/PHP_CodeSniffer, pear/Net_Growl, use --alldeps to download automatically
phing/phing can optionally use package "phing/phingdocs" (version >= 2.6.1)
phing/phing can optionally use package "pear/VersionControl_SVN" (version >= 0.4.0)
phing/phing can optionally use package "pear/VersionControl_Git" (version >= 0.4.3)
phing/phing can optionally use package "phpunit/PHPUnit" (version >= 3.6.0)
phing/phing can optionally use package "phpunit/PHP_CodeCoverage" (version >= 1.1.0)
phing/phing can optionally use package "pecl/Xdebug" (version >= 2.0.5)
phing/phing can optionally use package "pear/PEAR_PackageFileManager" (version >= 1.5.2)
phing/phing can optionally use package "pear/Services_Amazon_S3" (version >= 0.3.1)
phing/phing can optionally use package "pear/HTTP_Request2" (version >= 0.5.2)
phing/phing can optionally use package "pdepend/PHP_Depend" (version >= 0.10.0)
phing/phing can optionally use package "phpmd/PHP_PMD" (version >= 1.1.0)
phing/phing can optionally use package "phpunit/phpcpd" (version >= 1.3.3)
phing/phing can optionally use package "phpunit/phploc" (version >= 1.6.4)
phing/phing can optionally use package "phpdoc/phpDocumentor" (version >= 2.0.0b7)
phing/phing can optionally use package "pear/PHP_CodeSniffer" (version >= 1.3.0)
phing/phing can optionally use package "pear/Net_Growl" (version >= 2.6.0)
downloading phing-2.6.1.tgz ...
Starting to download phing-2.6.1.tgz (481,484 bytes)
.................................................................................................done: 481,484 bytes
install ok: channel://pear.phing.info/phing-2.6.1

On installe nos outils de QA (PHP_CodeBrowser, PHP_CodeSniffer, PHP_CPD, PHPDoc, PHPLoc, PHP_MD) :

[user@computer ~]# pear install PHP_CodeSniffer
Did not download optional dependencies: phpunit/PHP_Timer, use --alldeps to download automatically
pear/PHP_CodeSniffer can optionally use package "phpunit/PHP_Timer"
downloading PHP_CodeSniffer-1.4.7.tgz ...
Starting to download PHP_CodeSniffer-1.4.7.tgz (406,387 bytes)
..................................done: 406,387 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-1.4.7

[user@computer ~]# pear install --alldeps phpmd/PHP_PMD
downloading PHP_PMD-1.5.0.tgz ...
Starting to download PHP_PMD-1.5.0.tgz (49,534 bytes)
.............done: 49,534 bytes
install ok: channel://pear.phpmd.org/PHP_PMD-1.5.0

[user@computer ~]# pear install phpunit/phpcpd
downloading phpcpd-1.4.3.tgz ...
Starting to download phpcpd-1.4.3.tgz (10,297 bytes)
.....done: 10,297 bytes
downloading FinderFacade-1.1.0.tgz ...
Starting to download FinderFacade-1.1.0.tgz (4,309 bytes)
...done: 4,309 bytes
downloading fDOMDocument-1.4.2.tgz ...
Starting to download fDOMDocument-1.4.2.tgz (15,121 bytes)
...done: 15,121 bytes
downloading Finder-2.3.6.tgz ...
Starting to download Finder-2.3.6.tgz (36,360 bytes)
...done: 36,360 bytes
install ok: channel://pear.netpirates.net/fDOMDocument-1.4.2
install ok: channel://pear.symfony.com/Finder-2.3.6
install ok: channel://pear.phpunit.de/FinderFacade-1.1.0
install ok: channel://pear.phpunit.de/phpcpd-1.4.3

[user@computer ~]# pear install pear.phpunit.de/phploc
downloading phploc-2.0.2.tgz ...
Starting to download phploc-2.0.2.tgz (12,541 bytes)
.....done: 12,541 bytes
downloading Console-2.3.6.tgz ...
Starting to download Console-2.3.6.tgz (84,471 bytes)
...done: 84,471 bytes
install ok: channel://pear.symfony.com/Console-2.3.6
install ok: channel://pear.phpunit.de/phploc-2.0.2

[user@computer ~]# pear install phpunit/PHP_CodeBrowser
WARNING: "pear/PhpDocumentor" is deprecated in favor of "phpdoc/phpdocumentor"
Did not download optional dependencies: pear/Text_Highlighter, phpunit/PHPUnit, pear/PhpDocumentor, use --alldeps to download automatically
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
Did not download optional dependencies: pear/DB, pear/MDB2, pear/Mail, use --alldeps to download automatically
phpunit/PHP_CodeBrowser can optionally use package "pear/Text_Highlighter" (version >= 0.7.1)
phpunit/PHP_CodeBrowser can optionally use package "phpunit/PHPUnit" (version >= 3.4.0)
phpunit/PHP_CodeBrowser can optionally use package "pear/PhpDocumentor" (version >= 1.4.3)
pear/Log can optionally use package "pear/DB" (version >= 1.3)
pear/Log can optionally use package "pear/MDB2" (version >= 2.0.0RC1)
pear/Log can optionally use package "pear/Mail"
pear/Log can optionally use PHP extension "sqlite"
downloading PHP_CodeBrowser-1.0.2.tgz ...
Starting to download PHP_CodeBrowser-1.0.2.tgz (171,746 bytes)
.....................................done: 171,746 bytes
downloading Console_CommandLine-1.2.0.tgz ...
Starting to download Console_CommandLine-1.2.0.tgz (39,740 bytes)
...done: 39,740 bytes
downloading File_Iterator-1.3.4.tgz ...
Starting to download File_Iterator-1.3.4.tgz (5,199 bytes)
...done: 5,199 bytes
downloading Log-1.12.7.tgz ...
Starting to download Log-1.12.7.tgz (46,898 bytes)
...done: 46,898 bytes
install ok: channel://pear.php.net/Console_CommandLine-1.2.0
install ok: channel://pear.phpunit.de/File_Iterator-1.3.4
install ok: channel://pear.php.net/Log-1.12.7
install ok: channel://pear.phpunit.de/PHP_CodeBrowser-1.0.2

[user@computer ~]# pear install phpdoc/phpDocumentor
downloading phpDocumentor-2.1.0.tgz ...
Starting to download phpDocumentor-2.1.0.tgz (2,512,395 bytes)
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done: 2,512,395 bytes
install ok: channel://pear.phpdoc.org/phpDocumentor-2.1.0

Mise en place

Pour gérer les tâches avec Phing, il faut créer un fichier build.xml (dans mon cas, à la racine du projet).

Ce fichier contiendra une variable builddir qui sera le dossier où seront crées les fichiers de log, docs, etc…
On crée ensuite la cible principale qa On peut appeler une cible de cette manière :

phing 

La cible principale qa appelle d’autres cibles :

Voici le fichier de référence :



    
    

    
    

    
    
        
    
    
    
        
        
        
        
    
    
    
        
            
                
                
            
            
            
        
        
            
                
                
            
            
            
        
    
    
    
        
            
                
                
            
            
        
    
    
    
        
            
                
                
            
            
        
    
    
    
        
            
                
                
            
        
    
    
    
        
            
                
                
            
            
            
            
        
    
    
    
        
            
                
                
            
        
    
    
    
        
    

Conclusion

Et voilà, vous pouvez dorénavant lancer une analyse qualité de votre code directement depuis de votre machine via Phing. Vous pouvez ajouter d’autres cibles pour gérer de nombreuses choses : checkout d’un SVN ou GIT, copie de fichier, déploiement FTP, requêtage de base de données, requêtage HTTP, ZIP/TAR et décompression d’archives. Phing est puissant et vous pouvez même créer vos propres plugins Phing.

Lien : Doc Phing

Cet article Automatiser vos tâches sur un projet PHP avec Phing est apparu en premier sur RootsLabs.

Gravatar de Progi1984
Original post of Progi1984.Votez pour ce billet sur Planet Libre.

Articles similaires