我正在 Jenkins 中使用 coverage 插件来显示覆盖率结果。
我是这样配置的:
recordCoverage qualityGates: [[
criticality: 'NOTE',
integerThreshold: 80,
metric: 'LINE',
threshold: 80.0]],
tools: [[parser: 'COBERTURA',
pattern: 'coverage_*.xml']]
由于我的作业不是直接在代理上执行,而是在 SLURM 集群中执行,因此 jenkins 工作空间与实际文件存储的位置不同。这是因为插件尝试存储文件时出现问题:
[Coverage] [-ERROR-] Errors while resolving source files on agent:
[Coverage] [-ERROR-] Removing non-workspace source directory '/tmp/scratch/mydir' - it has not been approved in Jenkins' global configuration.
[Coverage] [-ERROR-] - Source file 'file1.py' not found
[Coverage] [-ERROR-] - Source file 'file2.py' not found
[Coverage] [-ERROR-] - Source file 'file3.py' not found
...
[Coverage] [-ERROR-] ... skipped logging of 105 additional errors ...
我在 Jenkins 中找到了这个选项:http://[my-jenkins-url]/manage/configureSecurity/ 在“Prism 语法突出显示”部分中。我填写了一些目录名称,但它不起作用。 这是我的配置
我的问题:
超级难看,但由于没有其他答案,这里有一个: 我们在 docker 容器中运行构建,因此将其安装到 /data 中。 cobertura 覆盖文件包含该 /data 路径。 因此,当我们在 jenkins 中运行 readCoverage 时,它会以与 OP 相同的方式失败。
=> 我刚刚添加了一个丑陋的 sed 来替换路径:
sh("sed -i 's#<source>/data/frontend</source>#<source>${WORKSPACE}/frontend</source>#' frontend/output/coverage/cobertura-coverage.xml")