J'utilise Jenkins 2.x avec une Jenkinsfile
pour exécuter un pipeline.
J'ai créé un travail à l'aide de Jenkinsfile et je souhaite appeler le plug-in Analysis Collector pour pouvoir afficher le rapport.
Voici mon Jenkinsfile actuel:
#!groovy
node {
stage 'Build '
echo "My branch is: ${env.BRANCH_NAME}"
sh 'cd gitlist-PHP && ./gradlew clean build dist'
stage 'Report'
step([$class: 'JUnitResultArchiver', testResults: 'gitlist-PHP/build/logs/junit.xml'])
step([$class: 'hudson.plugins.checkstyle.CheckStylePublisher', checkstyle: 'gitlist-PHP/build/logs/phpcs.xml'])
step([$class: 'hudson.plugins.dry.DryPublisher', CopyPasteDetector: 'gitlist-PHP/build/logs/phpcpd.xml'])
stage 'mail'
mail body: 'project build successful',
from: '[email protected]',
replyTo: '[email protected]',
subject: 'project build successful',
to: '[email protected]'
}
Je veux invoquer invoquer Checkstyle, Junit et le plugin DRY de Jenkins. Comment configurer ces plugins dans la Jenkinsfile
? Ces plugins prennent-ils en charge les pipelines?
step([$class: 'hudson.plugins.checkstyle.CheckStylePublisher', checkstyle: 'gitlist-PHP/build/logs/phpcs.xml'])
Toujours selon le référentiel de code source, l'argument 'checkstyle' devrait être nommé 'pattern'.
Voici comment je gère ceci:
PMD
stage('PMD') {
steps {
sh 'vendor/bin/phpmd . xml build/phpmd.xml --reportfile build/logs/pmd.xml --exclude vendor/ || exit 0'
pmd canRunOnFailed: true, pattern: 'build/logs/pmd.xml'
}
}
PHPCPD
stage('Copy paste detection') {
steps {
sh 'vendor/bin/phpcpd --log-pmd build/logs/pmd-cpd.xml --exclude vendor . || exit 0'
dry canRunOnFailed: true, pattern: 'build/logs/pmd-cpd.xml'
}
}
Style de contrôle
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'
checkstyle pattern: 'build/logs/checkstyle.xml'
}
}
JDepend
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 .'
}
}
L'exemple complet que vous pouvez trouver ici: https://Gist.github.com/Yuav/435f29cad03bf0006a85d31f2350f7b4
La configuration suivante fonctionne pour moi:
step([$class: 'CheckStylePublisher', pattern: 'target/scalastyle-result.xml, target/scala-2.11/scapegoat-report/scapegoat-scalastyle.xml'])
Pour Junit, la configuration est encore plus simple:
junit 'target/test-reports/*.xml'
Il semble que les plugins doivent être modifiés pour pouvoir fonctionner en tant que Pipeline Steps , ainsi, s'ils ne sont pas mis à jour, ils ne fonctionnent pas.
Voici une liste des plugins compatibles mis à jour:
https://github.com/jenkinsci/pipeline-plugin/blob/master/COMPATIBILITY.md
Et voici la documentation sur la manière dont les plugins doivent être mis à jour pour prendre en charge les pipelines:
https://github.com/jenkinsci/pipeline-plugin/blob/master/DEVGUIDE.md