web-dev-qa-db-fra.com

Comment utiliser le plugin de rapport sur (PMD, PHPCPD, checkstyle, Jdepend ...) dans un pipeline Jenkins?

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?

8
Pandu Siregar
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'.

Repo: https://github.com/jenkinsci/checkstyle-plugin/blob/master/src/main/Java/hudson/plugins/checkstyle/CheckStylePublisher.Java#L42

5
Azai

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

Liens de référence

4
Marek Skiba

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'
4

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

1
thaddeusmt