Как использовать подключаемый модуль отчета (PMD, PHPCPD, checkstyle, Jdepend) в конвейере Jenkins?

Я использую Jenkins 2.x с Jenkinsfile для запуска конвейера.

Я создал задание с помощью Jenkinsfile и хочу вызвать подключаемый модуль Analysis Collector, чтобы просмотреть отчет.

Вот мой текущий Jenkinsfile:

#!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]'
}

Я хочу вызвать плагин Checkstyle, Junit и DRY от Jenkins. Как настроить эти плагины в Jenkinsfile? Поддерживают ли эти плагины конвейеры?


person Pandu Siregar    schedule 25.07.2016    source источник
comment
Пожалуйста, отредактируйте свой вопрос и исправьте свой стиль. Ваш вопрос очень тяжело читать.   -  person tisto    schedule 25.07.2016


Ответы (4)


У меня работает следующая конфигурация:

   step([$class: 'CheckStylePublisher', pattern: 'target/scalastyle-result.xml, target/scala-2.11/scapegoat-report/scapegoat-scalastyle.xml'])

Для настройки junit еще проще:

junit 'target/test-reports/*.xml'
person Aliaksandr Kavalevich    schedule 12.01.2017

step([$class: 'hudson.plugins.checkstyle.CheckStylePublisher', checkstyle: 'gitlist-PHP/build/logs/phpcs.xml'])

Также, согласно репозиторию исходного кода, аргумент «checkstyle» должен называться «шаблон».

Репозиторий: https://github.com/jenkinsci/checkstyle-plugin/blob/master/src/main/java/hudson/plugins/checkstyle/CheckStylePublisher.java#L42

person Azai    schedule 05.09.2016

Вот как я справляюсь с этим:

ПМД

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

Проверка

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 .'
    }
}

Полный пример вы можете найти здесь: https://gist.github.com/Yuav/435f29cad03bf0006a85d31f2350f7b4

Справочные ссылки

person Marek Skiba    schedule 12.10.2017

Похоже, что плагины необходимо модифицировать для поддержки работы в качестве конвейера шагов, поэтому, если они не обновлялись, не работают.

Вот список совместимых подключаемых модулей, которые были обновлены:
https://github.com/jenkinsci/pipeline-plugin/blob/master/COMPATIBILITY.md

А вот документация о том, как необходимо обновить плагины для поддержки конвейеров:
https://github.com/jenkinsci/pipeline-plugin/blob/master/DEVGUIDE.md

person thaddeusmt    schedule 10.08.2016
comment
обратите внимание, файл совместимости не обновлен, checkstyle поддерживается как общий этап сборки: step([$class: 'CheckStylePublisher', canComputeNew: false, defaultEncoding: '', Health: '', pattern : '**/checkstyle-result.xml', unHealthy: '']) у меня работает.. - person code4cause; 10.01.2017