Skip to content

Commit

Permalink
migrate to Jenkins CI (#170)
Browse files Browse the repository at this point in the history
* move phpunit logs to Jenkinsfile
  • Loading branch information
jsirish authored Jan 7, 2019
1 parent 88f38cd commit ba0f1ab
Show file tree
Hide file tree
Showing 6 changed files with 241 additions and 72 deletions.
37 changes: 0 additions & 37 deletions .scrutinizer.yml

This file was deleted.

34 changes: 0 additions & 34 deletions .travis.yml

This file was deleted.

106 changes: 106 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
pipeline {
agent any
stages {

stage('Build') {
steps {
sh 'mkdir silverstripe-cache'
sh 'composer require --prefer-dist --no-update silverstripe-themes/simple:~3.2'
sh 'composer update --no-suggest --prefer-dist'
}
}

stage('PHPUnit') {
steps {
sh 'vendor/bin/phpunit --coverage-clover=build/logs/clover.xml --log-junit=build/logs/junit.xml'
}
}

/*
stage('Coverage') {
steps {
publishHTML (target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'build/coverage',
reportFiles: 'index.html',
reportName: "Coverage Report"
])
}
}
*/

stage("Publish Clover") {
steps {
step([$class: 'CloverPublisher', cloverReportDir: 'build/logs', cloverReportFileName: 'clover.xml'])
}

}

stage('Checkstyle Report') {
steps {
sh 'vendor/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=phpcs.xml.dist --extensions=php,inc --ignore=autoload.php --ignore=vendor/ src/ tests/ || exit 0'
}
}

stage('Mess Detection Report') {
steps {
sh 'vendor/bin/phpmd src xml codesize,unusedcode,naming --reportfile build/logs/pmd.xml --exclude vendor/ --exclude autoload.php || exit 0'
}
}

stage('CPD Report') {
steps {
sh 'vendor/bin/phpcpd --log-pmd build/logs/pmd-cpd.xml --exclude vendor src/ tests/ || exit 0'
}
}

stage('Lines of Code') {
steps {
sh 'vendor/bin/phploc --count-tests --exclude vendor/ --log-csv build/logs/phploc.csv --log-xml build/logs/phploc.xml src/ tests/'
}
}

stage('Software metrics') {
steps {
sh 'mkdir build/pdepend'
sh 'vendor/bin/pdepend --jdepend-xml=build/logs/jdepend.xml --jdepend-chart=build/pdepend/dependencies.svg --overview-pyramid=build/pdepend/overview-pyramid.svg --ignore=vendor src'
}
}

stage('Generate documentation') {
steps {
sh 'vendor/bin/phpdox -f phpdox.xml'
}
}

stage('Publish Documentation') {
steps {
publishHTML (target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'docs/html',
reportFiles: 'index.html',
reportName: "API"
])
}
}

stage('Cleanup') {
steps {
sh 'rm -rf silverstripe-cache'
}
}
}

post {
always {
junit 'build/logs/*.xml'
recordIssues enabledForFailure: true, tool: checkStyle(pattern: '**/logs/checkstyle.xml')
recordIssues enabledForFailure: true, tool: cpd(pattern: '**/logs/pmd-cpd.xml')
recordIssues enabledForFailure: true, tool: pmd(pattern: '**/logs/pmd.xml')
}
}
}
7 changes: 6 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,12 @@
},
"require-dev": {
"phpunit/PHPUnit": "^5.7",
"squizlabs/php_codesniffer": "*"
"squizlabs/php_codesniffer": "*",
"phpmd/phpmd": "^2.6",
"sebastian/phpcpd": "^3.0",
"phploc/phploc": "^4.0",
"pdepend/pdepend": "^2.5",
"theseer/phpdox": "^0.11.0"
},
"config": {
"process-timeout": 600
Expand Down
126 changes: 126 additions & 0 deletions phpdox.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- This is a skeleton phpDox config file - Check http://phpDox.de for latest version and more info -->
<phpdox xmlns="http://xml.phpdox.net/config" silent="false">
<!-- @silent: true | false to enable or disable visual output of progress -->

<!-- Additional bootstrap files to load for additional parsers, enrichers and/or engines -->
<!-- Place as many require nodes as you feel like in this container -->
<!-- syntax: <require file="/path/to/file.php" /> -->
<bootstrap />

<!-- A phpDox project to process, you can have multiple projects in one config file -->
<project name="phpdox" source="${basedir}/src" workdir="${basedir}/build/phpdox/xml">
<!-- @name - The name of the project -->
<!-- @source - The source directory of the application to process -->
<!-- @workdir - The directory to store the xml data files in -->

<!-- A phpDox config file can define additional variables (properties) per project -->
<!-- <property name="some.name" value="the.value" /> -->

<!-- Values can make use of previously defined properties -->
<!-- The following are defined by default:
${basedir} Directory the loaded config file is in
${phpDox.home} Directory of the phpDox installation
${phpDox.file} The current config file
${phpDox.version} phpDox' version number
${phpDox.project.name} The value of project/@name if set, otherwise 'unnamed'
${phpDox.project.source} The value of project/@source if set, otherwise '${basedir}/src'
${phpDox.project.workdir} The value of project/@workdir if set, otherwise '${basedir}/build/phpdox/xml'
${phpDox.php.version} The PHP Version of the interpreter in use
-->

<!-- Additional configuration for the collecting process (parsing of php code, generation of xml data) -->
<collector publiconly="false" backend="parser" encoding="auto">
<!-- @publiconly - Flag to disable/enable processing of non public methods and members -->
<!-- @backend - The collector backend to use, currently only shipping with 'parser' -->
<!-- @encoding - Charset encoding of source files (overwrite default 'auto' if detection fails) -->

<!-- <include / exclude filter for filelist generator, mask must follow fnmatch() requirements -->
<!-- Multiple elements can be added to define more than one mask per filter -->
<include mask="*.php" />
<exclude mask="" />

<!-- How to handle inheritance -->
<inheritance resolve="true">
<!-- @resolve - Flag to enable/disable resolving of inheritance -->

<!-- You can define multiple (external) dependencies to be included -->
<!-- <dependency path="" -->
<!-- @path - path to a directory containing an index.xml for a dependency project -->
</inheritance>

</collector>

<!-- Configuration of generation process -->
<generator output="${basedir}/docs">
<!-- @output - (Base-)Directory to store output data in -->

<!-- A generation process consists of one or more build tasks and of (optional) enrich sources -->

<enrich base="${basedir}/build">
<!-- @base - (Base-)Directory of datafiles used for enrich process -->

<!--<source type="...">-->
<!-- @type - the handler for the enrichment -->
<!-- known types by default are: build, checkstyle, git, phpcs, phploc, phpunit, pmd -->

<!-- every enrichment source can have additional configuration nodes, most probably need a logfile -->
<!-- <file name="path/to/log.xml" /> -->
<!--</source> -->

<!-- add phploc output -->
<source type="phploc">
<file name="build/logs/phploc.xml" />
</source>

<!-- git vcs information -->
<source type="git">
<git binary="/usr/bin/git" />
<history enabled="true" limit="15" cache="${phpDox.project.workdir}/gitlog.xml" />
</source>

<!-- PHP Code Sniffer findings -->
<source type="phpcs">
<file name="build/logs/phpcs.xml" />
</source>

<!-- PHPMessDetector -->
<source type="pmd">
<file name="build/logs/pmd-cpd.xml" />
</source>

<!-- PHPUnit Coverage XML -->
<source type="phpunit">
<coverage path="build/logs/clover.xml" />
<!-- @path - the directory where the xml code coverage report can be found -->
</source>
<!--
<source type="phpunit">
<filter directory="${phpDox.project.source}" />
</source>
-->

</enrich>

<!-- <build engine="..." enabled="true" output="..." /> -->
<!-- @engine - The name of the engine this build task uses, use ./phpDox - -engines to get a list of available engines -->
<!-- @enabled - Flag to enable/disable this engine, default: enabled=true -->
<!-- @output - (optional) Output directory; if relative (no / as first char) it is interpreted as relative to generator/@output -->

<!-- An engine and thus build node can have additional configuration child nodes, please check the documentation for the engine to find out more -->

<!-- default engine "html" -->
<build engine="html" enabled="true" output="html">
<template dir="${phpDox.home}/templates/html" />
<file extension="html" />
</build>

</generator>
</project>

</phpdox>
3 changes: 3 additions & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,7 @@
</exclude>
</whitelist>
</filter>
<php>
<ini name='memory_limit' value='2048M' />
</php>
</phpunit>

0 comments on commit ba0f1ab

Please sign in to comment.