我正在使用jenkins的管道插件,我想为每次运行生成代码覆盖率报告,并将其与管道ui一起显示。是否有一个插件我可以用来做这件事(例如Cobertura但它似乎没有管道支持)?
答案 0 :(得分:36)
有一种方法可以添加管道步骤来发布您的覆盖率报告,但它不会在BlueOcean界面下显示。它将在正常用户界面中显示正常。
pipeline {
agent any
stages {
...
}
post {
always {
junit '**/nosetests.xml'
step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false])
}
}
}
请注意,Cobertura插件的其中一个参数是它将使用的XML(示例中为“** / coverage.xml”)。
如果您使用的是python,则需要使用以下内容:
nosetests --with-coverage --cover-xml --cover-package=pkg1,pkg2 --with-xunit test
答案 1 :(得分:10)
如今,您也可以直接在Jenkinsfile中使用cobertura
命令
stage ("Extract test results") {
cobertura coberturaReportFile: 'path-to/coverage.xml'
}
答案 2 :(得分:1)
hwjp的答案是正确的,但是您可以在命令中添加一些不容易找到的额外参数。
一旦安装了Cobertura插件,就可以在
中找到cobertura步骤选项。工作仪表板页面->管道语法->步骤参考
还有一个摘要生成器,对于开始使用它非常有用
工作仪表板页面->管道语法
示例命令:
type GenericArgument<T> = T extends A<infer R> ? R : never;
function test<T>(obj: T): GenericArgument<T> {
// do operations
// return ...;
}
class A<T> {
something: T;
}
class B extends A<number> {
field = test<B>(this); // <-- field has a type: number
}
class C extends A<number> {
field = test(this); // <-- field has a type: GenericArgument<this>
}
enableNewApi是设置为true的好方法,因为新的API更漂亮:D 如果代码覆盖率太低,设置覆盖率目标将自动使工作失败
答案 3 :(得分:0)
使用指定目录中的command line cobertura-report
生成报告,并将结果附加为工件。
cobertura-report [--datafile file] --destination dir [--format
html|xml] [--encoding encoding] directory [--basedir dir]