Php_SF2_Build-For-Jenkins
<?xml version="1.0" encoding="UTF-8"?>
<project name="NosBelIdees" basedir="." default="build:main">
<!-- ****************** -->
<!-- Project properties -->
<!-- ****************** -->
<property name="dir.app" value="${project.basedir}/app" />
<property name="dir.src" value="${project.basedir}/src" />
<property name="dir.bin" value="${project.basedir}/bin" />
<property name="dir.build" value="${project.basedir}/build" />
<property name="dir.docs" value="${dir.build}/docs" />
<property name="dir.browser" value="${dir.build}/browser" />
<property name="dir.reports" value="${dir.build}/logs" />
<property name="dir.reports.pdepend" value="${dir.reports}/pdepend" />
<property name="dir.reports.coverage" value="${dir.reports}/coverage" />
<property name="dir.symfony.config" value="${project.basedir}/../sfConfigs" />
<!-- Filesets -->
<fileset id="sourcecode" dir="${dir.src}">
<include name="**/*.php" />
</fileset>
<!-- *********** -->
<!-- Main Target -->
<!-- *********** -->
<target name="build:main"
depends="build:clean, build:prepare, build:vendors, build:test, build:check, build:phpdoc, build:browser"
description="Run all test and build everything" />
<!-- ******************* -->
<!-- First level targets -->
<!-- ******************* -->
<!-- Project build clean -->
<target name="build:clean" description="Clean up build directories.">
<echo msg="Cleaning build directories ..." />
<delete dir="${dir.build}" verbose="true" />
<delete file="${project.basedir}/composer.phar"/>
<delete file="${dir.app}/config/parameters.yml"/>
</target>
<!-- Project build prepare -->
<target name="build:prepare" description="Create build directories.">
<echo msg="Creating build directories ..." />
<mkdir dir="${dir.build}" />
<mkdir dir="${dir.docs}" />
<mkdir dir="${dir.browser}" />
<mkdir dir="${dir.reports}" />
<mkdir dir="${dir.reports.coverage}" />
<mkdir dir="${dir.reports.pdepend}" />
<copy file="${dir.symfony.config}/${phing.project.name}" tofile="app/config/parameters.yml" overwrite="true"/>
</target>
<!-- Dependency Management -->
<target name="build:vendors"
depends="composer:get, composer:update"
description="Dependency Management" />
<!-- Test target -->
<target name="build:test"
depends="test:unit"
description="Executes all tests.." />
<!-- Check target -->
<target name="build:check"
depends="check:cs, check:cpd, check:depend, check:md"
description="Analyzes app code." />
<!-- PHP Code Browser -->
<target name="build:browser" description="Generating code browser...">
<exec command="phpcb
--log ${dir.reports}
--source ${project.basedir}/src
--output ${dir.browser}" />
</target>
<!-- PHP Documentor -->
<target name="build:phpdoc" description="Generate API documentation.">
<echo msg="Generating API documentation with PHPDoc..." />
<exec command="phpdoc -d ${dir.src} -t ${dir.docs} --template responsive --title ${phing.project.name}" />
</target>
<!-- ******************** -->
<!-- Second level targets -->
<!-- ******************** -->
<!-- Get Composer -->
<target name="composer:get" description="Get composer">
<echo msg="Get composer.phar ..." />
<exec executable="wget">
<arg value="-nc" />
<arg value="http://getcomposer.org/composer.phar" />
</exec>
</target>
<!-- Install vendors -->
<target name="composer:install" description="Installing vendors with composer">
<echo msg="Installing vendors with composer ..." />
<exec executable="php">
<arg value="composer.phar" />
<arg value="install" />
</exec>
</target>
<!-- Update vendors -->
<target name="composer:update" description="Installing vendors with composer">
<echo msg="Updating vendors with composer ..." />
<exec executable="php">
<arg value="composer.phar" />
<arg value="update" />
</exec>
</target>
<!-- Php code sniffer -->
<target name="check:cs" description="Checks coding standard.">
<echo msg="Checking coding standard ..." />
<phpcodesniffer standard="PSR2"
showSniffs="false"
showWarnings="true">
<fileset refid="sourcecode" />
<formatter type="checkstyle" outfile="${dir.reports}/checkstyle.xml" />
</phpcodesniffer>
</target>
<!-- copy/paste detector -->
<target name="check:cpd" description="Checks similar code blocks.">
<echo msg="Checking similar code blocks ..." />
<phpcpd minTokens="5"
minLines="5">
<fileset refid="sourcecode" />
<formatter type="pmd" outfile="${dir.reports}/pmd-cpd.xml" />
</phpcpd>
</target>
<!-- PhpDepend -->
<target name="check:depend" description="Analyse du couplage et des dépendances du code.">
<echo msg="Analyse du couplage et des dépendances du code ..." />
<phpdepend>
<fileset refid="sourcecode" />
<logger type="jdepend-xml" outfile="${dir.reports.pdepend}/jdepend.xml" />
<logger type="jdepend-chart" outfile="${dir.reports.pdepend}/dependencies.svg" />
<logger type="overview-pyramid" outfile="${dir.reports.pdepend}/overview-pyramid.svg" />
</phpdepend>
</target>
<!-- PHP Mess Detector -->
<target name="check:md" description="Analyse du code mort.">
<echo msg="Analyse du code mort ..." />
<phpmd rulesets="codesize,unusedcode,naming,design">
<fileset refid="sourcecode" />
<formatter type="xml" outfile="${dir.reports}/pmd.xml" />
</phpmd>
</target>
<!-- Unit tests -->
<target name="test:unit"
depends="build:vendors"
description="Executes unit tests.">
<echo msg="Running unit tests ..." />
<exec command="phpunit --log-junit ${dir.reports}/phpunit.xml --coverage-clover ${dir.reports.coverage}/clover.xml --coverage-html ${dir.reports.coverage}/ -c ${dir.app}"/>
</target>
</project>