Исключить пакет из покрытия Jacoco в Дженкинс - PullRequest
0 голосов
/ 21 декабря 2018

Попытка исключить пакеты из отчета о покрытии при сбое моего конвейера Jenkins.У меня есть подпроект со всеми POJO: s.Я не хочу писать самое подходящее для всего этого.Следовательно, они будут перетаскивать сом, что покрытие будет ниже порога, и не удастся выполнить мою сборку.

Должно быть возможно исключить некоторые пакеты, но я не могу заставить его работать.

У меня есть следующий файл jacoco.gradle:

apply plugin: 'jacoco'  
apply plugin: 'java'  
jacoco {  
  toolVersion = "0.8.2"  
}  

jacocoTestReport {  
reports {  
  xml.enabled true  
  csv.enabled false  
  html.enabled true  
}  

afterEvaluate {  
  classDirectories = files(classDirectories.files.collect {  
     fileTree(dir: it, exclude: '**xxx/yyy/zzz/**')  
  })  
}  

task coverage { dependsOn 'jacocoTestReport' }  

check.dependsOn 'jacocoTestReport'  

В моем файле sonar.gradle:

apply plugin: 'org.sonarqube'  

sonarqube {  
properties {  
  property "sonar.forceAnalysis", "true"  
  property "sonar.forceAuthentication", "true"  
  property "sonar.java.coveragePlugin", "jacoco"  
  property "sonar.login", ""  
  property "sonar.password", ""  
 }  
}  

subprojects {  
 sonarqube {  
  properties {  
     property "sonar.jacoco.reportPaths", 
 "$buildDir/reports/jacoco/allTests.exec"
     property "sonar.junit.reportsPath", "$buildDir/test-results/test"  
  }  
 }  
}  

task sonar { dependsOn 'sonarqube' }  

В моем build.gradle:

apply from: 'gradle/sonar.gradle'  
...  
apply plugin: 'java'  
...  
subprojects {  
  apply from: '../gradle/jacoco.gradle'   
  ...  
}  

И, наконец, из моего файла Дженкинса:

step([$class: 'JacocoPublisher', changeBuildStatus: false, 
 exclusionPattern: '**/*Test*.class', inclusionPattern: 
 '**/*.class', minimumBranchCoverage: '80', sourcePattern: '**/src'])  

try {  
 dir(BUILD_DIR) {  
 sh './gradlew sonar'  
}  

Но все же xxx.yyy.zzz генерируется в отчете о покрытии в Jenkins!

1 Ответ

0 голосов
/ 03 января 2019

Наконец-то все заработало!Ключом является JacocoPuplisher.

step([$class: 'JacocoPublisher', changeBuildStatus: false, exclusionPattern: 
'**/xxx/yyy/zzz/**/*.class, **/*Test*.class', inclusionPattern: '**/*.class', 
minimumBranchCoverage: '80', sourcePattern: '**/src'])

Это единственный способ заставить его работать с Дженкинсом.

Установка sonar.coverage.exclusion или использование вышеупомянутого материала afterEvalueate не имеетэффект.

...