Permalink
Browse files

Add build process for jenkins integration

  • Loading branch information...
1 parent d4e1bee commit 96233a6f5e6e4c6cfe143d49c0a25383a29ed55b Olivier Paradis committed Apr 30, 2012
Showing with 331 additions and 3 deletions.
  1. +9 −0 .gitignore
  2. +16 −0 .travis.yml
  3. +22 −0 Tests/tests/autoload.php.dist
  4. +16 −0 Tests/tests/bootstrap.php
  5. +232 −0 build.xml
  6. +2 −3 composer.json
  7. +34 −0 phpunit.xml.dist
View
@@ -0,0 +1,9 @@
+.idea
+.DS_Store
+build
+phpunit.xml
+Resources/doc/_build/*
+nbproject
+coverage
+composer.lock
+vendor
View
@@ -0,0 +1,16 @@
+language: php
+
+php:
+ - 5.3
+ - 5.4
+
+env:
+ - SYMFONY_VERSION=v2.0.12
+ - SYMFONY_VERSION=origin/2.0
+
+before_script:
+ - wget -nc http://getcomposer.org/composer.phar
+ - php composer.phar install
+
+notifications:
+ webhooks: http://sonata-project.org/bundles/user/2-0/travis
@@ -0,0 +1,22 @@
+<?php
+
+// if the bundle is within a symfony project, try to reuse the project's autoload
+$autoload = __DIR__.'/../../../../../../app/autoload.php';
+
+// if the bundle is the project, try to use the composer's autoload for the tests
+$composerAutoload = __DIR__.'/../../vendor/autoload.php';
+
+if (is_file($autoload)) {
+ include $autoload;
+} elseif (is_file($composerAutoload)) {
+ include $composerAutoload;
+} else {
+ die('Unable to find autoload.php file, please use composer to load dependencies:
+
+wget http://getcomposer.org/composer.phar
+php composer.phar install
+
+Visit http://getcomposer.org/ for more information.
+
+');
+}
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * this file is part of the symfony package.
+ *
+ * (c) fabien potencier <fabien.potencier@symfony-project.com>
+ *
+ * for the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (file_exists($file = __DIR__.'/autoload.php')) {
+ require_once $file;
+} elseif (file_exists($file = __DIR__.'/autoload.php.dist')) {
+ require_once $file;
+}
View
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="SonataUserBundle" basedir="." default="build:main">
+
+ <!-- Config files -->
+ <property name="dir.config" value="${project.basedir}" />
+ <property name="config.phpunit" value="${dir.config}/phpunit.xml.dist" />
+ <property name="config.pmd" value="${dir.config}/pmd.xml.dist" />
+
+ <!-- Build paths -->
+ <property name="dir.build" value="${project.basedir}/build" />
+ <property name="dir.reports" value="${dir.build}/reports" />
+ <property name="dir.reports.check" value="${dir.reports}/check" />
+ <property name="dir.reports.test" value="${dir.reports}/test" />
+ <property name="dir.reports.test.unit" value="${dir.reports.test}/unit" />
+ <property name="dir.reports.test.coverage" value="${dir.reports.test}/coverage" />
+ <property name="dir.docs" value="${dir.build}/docs" />
+ <property name="dir.docs.api" value="${dir.docs}/api" />
+ <property name="dir.docs.rst" value="${dir.docs}/rst" />
+ <property name="dir.docs.php" value="${dir.docs}/php" />
+
+ <!-- Source paths -->
+ <property name="dir.src" value="${project.basedir}" />
+ <property name="dir.src.rst" value="${dir.src}/Resources/doc" />
+
+ <!-- Source fileset (used by check tasks) -->
+ <fileset id="sourcecode" dir="${dir.src}">
+ <include name="**/*.php" />
+ <exclude name="**/*Test.php" />
+ <exclude name="vendor/**/*.php" />
+ </fileset>
+
+
+ <!-- BUILD TASKS -->
+
+ <!-- Main (default) task -->
+ <target name="build:main"
+ depends="build:clean, build:prepare, build:check, build:test, build:doc"
+ description="Run all test and build everything"/>
+
+ <!-- Clean previous build files -->
+ <target name="build:clean"
+ description="Clean previous build files">
+
+ <delete dir="${dir.build}" verbose="true" />
+
+ </target>
+
+ <!-- Prepare build (performed by each build:* task when called as standalone) -->
+ <target name="build:prepare"
+ description="Prepare build">
+
+ <mkdir dir="${dir.build}" />
+
+ </target>
+
+ <!-- Check Project -->
+ <target name="build:check"
+ description="Check source code"
+ depends="build:prepare, check:prepare, check:cs, check:md, check:cpd"/>
+
+ <!-- Test Project -->
+ <target name="build:test"
+ description="Perform all tests"
+ depends="build:prepare, test:prepare, test:unit"/>
+
+ <!-- Generate documentation -->
+ <target name="build:doc"
+ depends="build:prepare, doc:prepare, doc:api"
+ description="Generate API documentation"/>
+
+ <!-- CHECK SECTION -->
+
+ <!-- Prepare check (performed by each check:* task when called as standalone) -->
+ <target name="check:prepare"
+ description="Create check directories">
+
+ <mkdir dir="${dir.reports.check}" />
+
+ </target>
+
+ <!-- CodeSniffer with Symfony2 convention -->
+ <target name="check:cs"
+ depends="check:prepare"
+ description="Generate PHP_CodeSniffer report">
+
+ <phpcodesniffer standard="Symfony2" showSniffs="true" showWarnings="true">
+ <fileset refid="sourcecode" />
+ <config name="error_severity" value="1"/>
+ <config name="warning_severity" value="5"/>
+ <formatter type="checkstyle" outfile="${dir.reports.check}/checkstyle.xml" />
+ </phpcodesniffer>
+
+ </target>
+
+ <!-- PHP Copy and Paste Detector -->
+ <target name="check:cpd"
+ description="Generate phpcpd report"
+ depends="check:prepare">
+
+ <phpcpd>
+ <fileset refid="sourcecode" />
+ <formatter type="pmd" outfile="${dir.reports.check}/cpd.xml" />
+ </phpcpd>
+
+ </target>
+
+ <!-- PHP Mess detector -->
+ <target name="check:md"
+ description="Generate phpmd report"
+ depends="check:prepare" >
+
+ <!-- if config.pmd file not found, use default pmd config -->
+ <if>
+ <not><available file="${config.pmd}"/></not>
+ <then>
+ <echo msg="phpmd config file not found: ${config.pmd}" />
+ <property name="config.pmd" value="codesize,unusedcode,naming,design" override="yes"/>
+ </then>
+ </if>
+
+ <phpmd rulesets="${config.pmd}">
+ <fileset refid="sourcecode" />
+ <formatter type="xml" outfile="${dir.reports.check}/pmd.xml" />
+ </phpmd>
+
+ </target>
+
+ <!-- TEST SECTION -->
+
+ <!-- Prepare test environment (performed by each test:* task when called as standalone) -->
+ <target name="test:prepare"
+ description="Prepare the test environment">
+
+ <echo msg="Prepare test report directory" />
+ <mkdir dir="${dir.reports.test}" />
+
+ <echo msg="Installing/Updating vendors..." />
+ <exec command="composer update --dev" passthru="true"/>
+
+ </target>
+
+ <!-- Prepare unit test environment -->
+ <target name="test:unit:prepare"
+ description="Prepare the unit test environment"
+ depends="test:prepare">
+
+ <mkdir dir="${dir.reports.test.unit}" />
+
+ </target>
+
+ <!-- Execute unit tests and code coverage -->
+ <target name="test:unit"
+ description="Perform unit tests and code coverage"
+ depends="test:prepare, test:unit:prepare">
+
+ <exec executable="phpunit" logoutput="true">
+ <arg line="--log-junit ${dir.reports.test.unit}/phpunit.xml" />
+ <arg line="--coverage-clover ${dir.reports.test.coverage}/clover.xml" />
+ <arg line="--coverage-html ${dir.reports.test.coverage}/html" />
+ <arg line="-c ${config.phpunit}" />
+ </exec>
+
+ </target>
+
+ <!-- DOCUMENTATION SECTION -->
+
+ <!-- Prepare the documentation environment -->
+ <target name="doc:prepare"
+ description="Prepare the documentation">
+
+ <mkdir dir="${dir.docs}" />
+
+ </target>
+
+ <!-- Prepare the Api documentation -->
+ <target name="doc:api:prepare"
+ description="Prepare the API documentation">
+
+ <mkdir dir="${dir.docs.api}" />
+
+ </target>
+
+ <!-- Generate the Api documentation -->
+ <target name="doc:api"
+ description="Generate API documentation"
+ depends="doc:prepare, doc:api:prepare">
+
+ <exec executable="apigen" logoutput="true" passthru="true">
+ <arg line="--source ${dir.src}" />
+ <arg line="--exclude */vendor/*" />
+ <arg line="--exclude */Tests/*" />
+ <arg line="--destination ${dir.docs.api}" />
+ </exec>
+
+ </target>
+
+ <!-- Prepare the phpDoc documentation -->
+ <target name="doc:php:prepare"
+ description="Prepare the Php documentation">
+
+ <mkdir dir="${dir.docs.php}" />
+
+ </target>
+
+ <!-- Build the phpDoc documentation -->
+ <target name="doc:php"
+ description="Generate Php documentation"
+ depends="doc:prepare, doc:php:prepare">
+
+ <exec executable="phpdoc" logoutput="true" passthru="true">
+ <arg line="--directory ${dir.src}" />
+ <arg line="--ignore '*/vendor/*,*/Tests/*'" />
+ <arg line="--target ${dir.docs.php}" />
+ <arg line="--sourcecode" />
+
+ </exec>
+
+ </target>
+
+ <!-- Generate the RST documentation -->
+ <target name="doc:rst"
+ description="Generate RST documentation"
+ depends="doc:prepare">
+
+ <!-- delete previous directory (sphinx refuses to work on an existing directory) -->
+ <delete dir="${dir.docs.rst}"/>
+
+ <exec command="sphinx-build -C -a -b html ${dir.src.rst} ${dir.docs.rst}" passthru="true" />
+
+ </target>
+
+</project>
View
@@ -18,9 +18,8 @@
],
"require": {
"php": ">=5.3.2",
- "symfony/framework-bundle": "2.0.*",
- "sonata-project/admin-bundle": "2.0.*",
- "friendsofsymfony/user-bundle": "1.*"
+ "friendsofsymfony/user-bundle": "1.2.*",
+ "sonata-project/admin-bundle": "2.0.*"
},
"suggest": {
"sonata-project/doctrine-orm-admin-bundle": "2.0.*"
View
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="true"
+ stopOnFailure="false"
+ syntaxCheck="false"
+ bootstrap="Tests/tests/bootstrap.php"
+>
+ <testsuites>
+ <testsuite name="User Bundle Test Suite">
+ <directory>./Tests/</directory>
+ </testsuite>
+ </testsuites>
+
+
+ <filter>
+ <whitelist>
+ <directory>./</directory>
+ <exclude>
+ <directory>./Tests/</directory>
+ <directory>./DataFixtures/</directory>
+ <directory>./Resources/</directory>
+ <directory>./DependencyInjection/</directory>
+ <directory>./vendor/</directory>
+ </exclude>
+ </whitelist>
+ </filter>
+
+</phpunit>

0 comments on commit 96233a6

Please sign in to comment.