Я создаю разделяемую библиотеку jenkins (в groovy) и тестирую ее с JenkinsPipelineUnit и в Gradle. Выполнение ./gradlew test jacocoTestReport
работает нормально, но отчет почти пуст (только заголовки); нет покрытия.
Вот соответствующие части моего build.gradle:
plugins {
id 'groovy'
id 'application'
id 'jacoco'
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.5.4'
testCompile 'junit:junit:4.12'
testCompile 'com.lesfurets:jenkins-pipeline-unit:1.1.1-custom' // minor adaptations, but that's another story
}
test {
systemProperty "pipeline.stack.write", System.getProperty("pipeline.stack.write")
}
jacocoTestReport {
group = "Reporting"
reports {
xml.enabled true
csv.enabled false
}
additionalSourceDirs = files('vars')
sourceDirectories = fileTree(dir: 'vars')
}
Думаю, проблема заключается в том, что мои «исходные» файлы находятся в каталоге vars , а не в src / groovy , как и ожидалось в обычном проекте groovy. Это, однако, требование к общей библиотеке Jenkins.
Я пытался указать
sourceSets {
main {
groovy {
srcDir 'vars'
}
}
}
но тогда gradle начнет компилировать эту разделяемую библиотеку, пока она должна быть загружена при использовании; и это все ломает ...
Моя структура папок выглядит следующим образом:
├── build.gradle
├── src
│ └── test
│ ├── groovy
│ │ └── TestSimplePipeline.groovy
│ └── resources
│ └── simplePipeline.jenkins
└── vars
├── MyPipeline.groovy
└── sh.groovy
Я думаю, что моя проблема связана с https://github.com/jenkinsci/JenkinsPipelineUnit/issues/119, но я не знаю, как использовать изменения, предложенные для maven в Gradle (даже не уверен, что они применимы к jacoco).