Migration of build files from Jenkins

This commit is contained in:
Thomas Mueller 2012-12-15 21:03:32 +01:00
parent f0893fb8fe
commit 03f4250ce6
4 changed files with 296 additions and 0 deletions

28
build/README.TXT Normal file
View File

@ -0,0 +1,28 @@
How to setup build.xml on your local machine?
1.) Install ant
e.g. apt-get install ant
2.) Install jslint
Get the latest distribution from http://code.google.com/p/jslint4java/ and
place jslint4java-*.jar in your home under .ant/lib/
3.) Install PHP qa tools
Run as root:
pear config-set auto_discover 1
pear install pear.phpqatools.org/phpqatools pear.netpirates.net/phpDox
Alternative:
pear install pear.phpunit.de/phploc
pear install pear.phpunit.de/phpcpd
pear install pear.phpmd.org/PHP_PMD
pear install pear.pdepend.org/PHP_Depend
pear install pear.php.org/PHP_CodeSniffer
pear install PHP_CodeSniffer
pear install pear.phpqatools.org/PHP_CodeBrowser
How to call this ant script?
ant -f build/build.xml -Dbasedir=.

179
build/build.xml Normal file
View File

@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="ownCloud" default="build" xmlns:jsl="antlib:com.googlecode.jslint4java">
<!-- the target 'build' can be used by developers for command line builds -->
<target name="build" depends="prepare,lint,jslint,phploc,pdepend,phpmd,phpcs,phpcpd,phpdoc,phpunit"/>
<!-- the target 'build-ci' is used within our Jenkins CI-server http://ci.tmit.eu -->
<target name="build-ci" depends="prepare,lint,jslint-ci,phploc,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpdoc,phpunit,phpcb-ci"/>
<!-- the target 'build-pullrequests' is used within our Jenkins CI-server for pull request analysis -->
<target name="build-pullrequests" depends="prepare,lint,jslint-ci"/>
<target name="clean" description="Cleanup build artifacts">
<delete dir="${basedir}/build/api"/>
<delete dir="${basedir}/build/code-browser"/>
<delete dir="${basedir}/build/coverage"/>
<delete dir="${basedir}/build/logs"/>
<delete dir="${basedir}/build/pdepend"/>
</target>
<target name="prepare" depends="clean"
description="Prepare for build">
<mkdir dir="${basedir}/build/api"/>
<mkdir dir="${basedir}/build/code-browser"/>
<mkdir dir="${basedir}/build/coverage"/>
<mkdir dir="${basedir}/build/logs"/>
<mkdir dir="${basedir}/build/pdepend"/>
</target>
<!-- php syntax analysis -->
<target name="lint">
<apply executable="php" failonerror="true">
<arg value="-l" />
<fileset dir="${basedir}">
<include name="**/*.php" />
<exclude name="**/3rdparty/**" />
<exclude name="**/l10n/**" />
<!-- modified / -->
</fileset>
</apply>
</target>
<!-- javascript lint -->
<target name="jslint-ci" description="Run the JSLint tool on JS files">
<jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false">
<jsl:predef>
jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize
</jsl:predef>
<!-- jsl:formatter type="plain" / -->
<jsl:formatter type="xml" destfile="build/logs/jslint.xml" />
<fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" />
</jsl:jslint>
</target>
<target name="jslint" description="Run the JSLint tool on JS files">
<jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false">
<jsl:predef>
jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize
</jsl:predef>
<jsl:formatter type="plain" />
<fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" />
</jsl:jslint>
</target>
<target name="phploc" description="Measure project size using PHPLOC">
<exec executable="phploc">
<arg value="--log-csv" />
<arg value="${basedir}/build/logs/phploc.csv" />
<arg path="${basedir}" />
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
</exec>
</target>
<target name="pdepend"
description="Calculate software metrics using PHP_Depend">
<exec executable="pdepend">
<arg value="--jdepend-xml=${basedir}/build/logs/jdepend.xml" />
<arg value="--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" />
<arg value="--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" />
<arg value="--ignore=${basedir}/3rdparty/"/>
<arg path="${basedir}" />
</exec>
</target>
<target name="phpmd-ci"
description="Perform project mess detection using PHPMD creating a log file for the continuous integration server">
<exec executable="phpmd">
<arg path="${basedir}" />
<arg value="xml" />
<arg value="${basedir}/build/phpmd.xml" />
<arg value="--reportfile" />
<arg value="${basedir}/build/logs/pmd.xml" />
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
</exec>
</target>
<target name="phpmd"
description="Perform project mess detection using PHPMD creating a log file for the continuous integration server">
<exec executable="phpmd">
<arg path="${basedir}" />
<arg value="xml" />
<arg value="${basedir}/build/phpmd.xml" />
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
</exec>
</target>
<target name="phpcs-ci"
description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server">
<exec executable="phpcs" >
<arg value="-p" />
<arg value="-v" />
<arg value="--tab-width=4" />
<arg value="--report=checkstyle" />
<arg value="--report-file=${basedir}/build/logs/checkstyle.xml" />
<arg value="--standard=${basedir}/build/phpcs.xml" />
<arg path="${basedir}" />
</exec>
</target>
<target name="phpcs"
description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server">
<exec executable="phpcs" >
<arg value="-p" />
<arg value="-v" />
<arg value="--tab-width=4" />
<arg value="--standard=${basedir}/build/phpcs.xml" />
<arg path="${basedir}" />
</exec>
</target>
<target name="phpcpd" description="Find duplicate code using PHPCPD">
<exec executable="phpcpd">
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
<arg path="${basedir}" />
</exec>
</target>
<target name="phpcpd-ci" description="Find duplicate code using PHPCPD">
<exec executable="phpcpd">
<arg value="--log-pmd" />
<arg value="${basedir}/build/logs/pmd-cpd.xml" />
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
<arg path="${basedir}" />
</exec>
</target>
<!-- No idea if we need this within this build file. This is part of the release which is not contained within this script. -->
<target name="phpdoc"
description="Generate API documentation using PHPDocumentor">
<!-- exec executable="phpdox"/ -->
</target>
<!-- currently we use autotest.sh for executing the unit tests against 3 different database setups -->
<target name="phpunit" description="Run unit tests with PHPUnit">
<echo message="TODO: phpunit goes here"/>
<!-- exec executable="phpunit" failonerror="true"/ -->
</target>
<target name="phpcb-ci"
description="Aggregate tool output with PHP_CodeBrowser">
<exec executable="phpcb">
<arg value="--log" />
<arg path="${basedir}/build/logs" />
<arg value="--source" />
<arg path="${basedir}" />
<arg value="--output" />
<arg path="${basedir}/build/code-browser" />
<arg value="--exclude" />
<arg value="${basedir}/3rdparty/" />
</exec>
</target>
</project>

80
build/phpcs.xml Normal file
View File

@ -0,0 +1,80 @@
<?xml version="1.0"?>
<ruleset name="PHP_CodeSniffer">
<description>The coding standard for PHP_CodeSniffer itself.</description>
<exclude-pattern>*/Tests/*</exclude-pattern>
<exclude-pattern>*/lib/MDB2/*</exclude-pattern>
<exclude-pattern>*/3rdparty/*</exclude-pattern>
<exclude-pattern>*.min.*</exclude-pattern>
<exclude-pattern>*/l10n/*</exclude-pattern>
<exclude-pattern>*/files_texteditor/js/aceeditor/*</exclude-pattern>
<exclude-pattern>*/files_pdfviewer/js/pdfjs/*</exclude-pattern>
<exclude-pattern>*/files_odfviewer/src/*</exclude-pattern>
<exclude-pattern>*/files_svgedit/svg-edit/*</exclude-pattern>
<exclude-pattern>*jquery-ui-1.8.16.custom.css</exclude-pattern>
<extensions>php</extensions>
<!-- Include the whole PEAR standard -->
<rule ref="PEAR">
<exclude name="PEAR.Commenting.FileComment.InvalidAuthors" />
<exclude name="PEAR.Commenting.FileComment.TagIndent" />
<exclude name="PEAR.Commenting.FileComment.MissingVersion" />
<exclude name="PEAR.Commenting.FileComment.MissingTag" />
<exclude name="PEAR.Commenting.ClassComment.TagIndent" />
<!-- exclude name="PEAR.WhiteSpace.ScopeIndent.Incorrect" /-->
<exclude name="PEAR.Commenting.ClassComment.WrongTagOrder" />
<exclude name="Generic.WhiteSpace.DisallowTabIndent.TabsUsed" />
<exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeOpenBracket" />
<exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
<exclude name="Generic.ControlStructures.InlineControlStructure.Discouraged" />
<exclude name="PEAR.Commenting.FunctionComment.ParameterCommentsNotAligned" />
<exclude name="PEAR.Commenting.FunctionComment.MissingParamTag" />
<exclude name="PEAR.ControlStructures.ControlSignature" />
<!-- ident and alignment stuff -->
<!-- exclude name="PEAR.ControlStructures.MultiLineCondition.Alignment" />
<exclude name="PEAR.WhiteSpace.ScopeClosingBrace.BreakIdent" / -->
<!-- allow curly on classes and functions -->
<exclude name="PEAR.Functions.FunctionDeclaration.BraceOnSameLine" />
<exclude name="PEAR.Classes.ClassDeclaration.OpenBraceNewLine" />
<exclude name="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore" />
<exclude name="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore" />
<exclude name="PEAR.WhiteSpace.ScopeIndent"/>
</rule>
<rule ref="Zend.Files.ClosingTag" />
<rule ref="Generic.WhiteSpace.ScopeIndent">
<properties>
<property name="indent" value="4"/>
</properties>
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="120"/>
<property name="absoluteLineLimit" value="160"/>
</properties>
</rule>
<!-- Include most of the Squiz standard -->
<!-- rule ref="Squiz">
<exclude name="Squiz.Classes.ClassFileName"/>
<exclude name="Squiz.Classes.ValidClassName"/>
<exclude name="Squiz.Commenting.ClassComment"/>
<exclude name="Squiz.Commenting.FileComment"/>
<exclude name="Squiz.Commenting.FunctionComment"/>
<exclude name="Squiz.Commenting.VariableComment"/>
<exclude name="Squiz.ControlStructures.SwitchDeclaration"/>
<exclude name="Squiz.Files.FileExtension"/>
<exclude name="Squiz.NamingConventions.ConstantCase"/>
<exclude name="Squiz.Operators.ComparisonOperatorUsage"/>
</rule -->
<!-- We allow variables to be used inside double quoted strings -->
<!-- rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar">
<severity>0</severity>
</rule -->
</ruleset>

9
build/phpmd.xml Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<ruleset name="My first PHPMD rule set" xmlns="http://pmd.sf.net/ruleset/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:noNamespaceSchemaLocation=" http://pmd.sf.net/ruleset_xml_schema.xsd">
<description> My custom rule set that checks my code... </description>
<!-- Import the entire unused code rule set -->
<rule ref="rulesets/unusedcode.xml" />
<!-- Import the entire cyclomatic complexity rule -->
<rule ref="rulesets/codesize.xml/CyclomaticComplexity" />
</ruleset>