使用TFS CI发布多个cobertura覆盖范围

时间:2018-03-20 09:26:20

标签: javascript tfs cobertura istanbul monorepo

我有一个monorepo项目,用lerna创建。而且,我使用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\*\coverage\cobertura\coverage.xml
  • 报告目录:$(System.DefaultWorkingDirectory)\packages\*\coverage(对于HTML报告)

但是,构建步骤会警告以下

  

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

     

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

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

1 个答案:

答案 0 :(得分:1)

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

此任务的参数摘要文件Publish Test Results测试结果文件不一样

文件结构中有两个coverage.xml文件。所以它只会像上面提到的消息一样使用第一个匹配。 Source code任务供您参考。

您必须在每个包的构建管道中添加另一个“发布代码覆盖率结果”任务。