Jenkins 代码覆盖率插件:批准绝对路径

问题描述 投票:0回答:1

我正在 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 语法突出显示”部分中。我填写了一些目录名称,但它不起作用。 这是我的配置

我的问题:

  • 在 Jenkins 中哪里可以找到批准此目录的选项?
  • 审批是否接受通配符(对于不同的测试,文件的确切位置可能不同,但根始终相同)?
jenkins code-coverage
1个回答
0
投票

超级难看,但由于没有其他答案,这里有一个: 我们在 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")
© www.soinside.com 2019 - 2024. All rights reserved.