forked from zikula-modules/Content
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
113 lines (107 loc) · 5.04 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '5'))
}
stages {
stage('Prepare') {
steps {
sh 'rm -rf build/api && mkdir build/api'
sh 'rm -rf build/coverage && mkdir build/coverage'
sh 'rm -rf build/logs && mkdir build/logs'
sh 'rm -rf build/pdepend && mkdir build/pdepend'
sh 'rm -rf build/phpdox && mkdir build/phpdox'
}
}
stage('Composer Install') {
steps {
sh 'cd build && wget -nc "http://getcomposer.org/composer.phar" && cd ..'
sh 'chmod +x build/composer.phar'
sh 'build/composer.phar install'
}
}
stage('PHP Syntax check') {
steps {
sh 'vendor/bin/parallel-lint --exclude vendor/ .'
}
}
stage('Test') {
steps {
sh 'vendor/bin/phpunit -c phpunit.xml || exit 0'
xunit(
testTimeMargin: '3000',
thresholdMode: 1,
thresholds: [failed(unstableThreshold: '1'), skipped()],
tools: [
PHPUnit(
deleteOutputFiles: true,
failIfNotNew: true,
pattern: 'build/logs/junit.xml',
skipNoTestFiles: false,
stopProcessingIfError: true
)
]
)
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'build/coverage', reportFiles: 'index.html', reportName: 'Coverage Report', reportTitles: ''])
step([$class: 'CloverPublisher', cloverReportDir: 'build/coverage', cloverReportFileName: 'build/logs/clover.xml'])
/* BROKEN step([$class: 'hudson.plugins.crap4j.Crap4JPublisher', reportPattern: 'build/logs/crap4j.xml', healthThreshold: '10']) */
}
}
stage('Checkstyle') {
steps {
sh 'vendor/bin/phpcs --report=checkstyle --report-file=`pwd`/build/logs/checkstyle.xml --standard=PSR2 --extensions=php --ignore=autoload.php --ignore=vendor/ . || 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 .'
}
}
stage('Copy paste detection') {
steps {
sh 'vendor/bin/phpcpd --log-pmd build/logs/pmd-cpd.xml --exclude vendor . || exit 0'
}
}
stage('Mess detection') {
steps {
sh 'vendor/bin/phpmd . xml build/phpmd.xml --reportfile build/logs/pmd.xml --exclude vendor/ || exit 0'
}
}
stage('Software metrics') {
steps {
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 .'
echo 'Scanning for warnings and open tasks...'
recordIssues aggregatingResults: true, enabledForFailure: true, sourceCodeEncoding: 'UTF-8', tools: [
checkStyle(pattern: 'build/logs/checkstyle.xml', reportEncoding: 'UTF-8'),
cpd(pattern: 'build/logs/pmd-cpd.xml', reportEncoding: 'UTF-8'),
taskScanner(highTags: 'FIXME, XXX', includePattern: '**/*.php', normalTags: 'TODO, HACK'),
//php(pattern: 'xxx', reportEncoding: 'UTF-8'),
pmdParser(pattern: 'build/logs/pmd.xml', reportEncoding: 'UTF-8')
]
}
}
stage('Generate documentation') {
steps {
sh 'vendor/bin/phpdox -f build/phpdox.xml'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'build/api', reportFiles: 'index.html', reportName: 'API Documentation', reportTitles: ''])
}
}
stage('Create release packages') {
steps {
sh 'rm -rf release && mkdir release'
sh 'rm -rf releaseWork && mkdir releaseWork'
sh 'cp -R src/* releaseWork'
sh 'cd releaseWork/modules/Zikula/ContentModule && ../../../../build/composer.phar install --no-dev --optimize-autoloader && cd ../../../../'
sh 'cp -R releaseWork/app/Resources/ZikulaContentModule/* releaseWork/modules/Zikula/ContentModule/Resources/'
sh 'rm -rf releaseWork/app'
sh 'cd releaseWork && zip -D -r ../release/Content.zip . && cd ..'
sh 'cd releaseWork && tar cfvz ../release/Content.tar.gz . && cd ..'
archiveArtifacts([
artifacts: 'release/**',
fingerprint: true,
onlyIfSuccessful: true
])
}
}
}
}