使用 TFS CI 发布多个 cobertura 报道



我有一个用lerna创建的monorepo项目。而且,我使用Karma + Jasmine进行单元测试。项目结构如下所示:

|-packages
| |-package1
| | |-coverage
| | | |-cobertura
| | | | |-coverage.xml  // here goes the coverage report in cobertura format
| | | |-Browser1
| | | | |-html          // here goes the reports in html (istanbul) for Browser 1
| | | |-Browser2
| | |   |-html          // here goes the reports in html (istanbul) for Browser 2
| | |-src
| | |-tests
| |-package2
| | |-coverage
| | | |-cobertura
| | | | |-coverage.xml
| | | |-Browser1
| | | | |-html        
| | | |-Browser2
| | |   |-html        
| | |-src
| | |-tests
| .
| .
| .
|-karma.conf.js

测试设置工作正常,并在每个单独的包中生成 html 报告以及 Cobertura 格式的coverage.xml。在 TFS CI 中,我有一个"发布代码覆盖率结果"生成步骤来发布覆盖率结果,其中包含不同选项的以下值:

  • 代码覆盖率工具:Cobertura
  • 摘要文件:$(System.DefaultWorkingDirectory)packages*coveragecoberturacoverage.xml
  • 报告目录:$(System.DefaultWorkingDirectory)packages*coverage(用于 HTML 报告)

但是,构建步骤警告以下

找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage\cobertura\coverage.xml

找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage

当然,它也只显示一个包的覆盖结果。有没有办法发布所有覆盖率报告,而无需在 CI 中为每个包添加构建步骤?

似乎您正在使用"发布代码覆盖率结果"任务,这与使用"发布测试结果"任务不同。您无法在单个任务中发布多个覆盖率测试结果。

此任务的参数是摘要文件,不像发布测试结果的测试结果文件

文件结构中有两个coverage.xml文件。因此,它只会使用第一个匹配项,就像消息提到的一样。任务的源代码供您参考。

必须在生成管道中为每个包添加另一个"发布代码覆盖率结果"任务。

最新更新