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

Javascript 使用TFS CI发布多个cobertura覆盖范围,javascript,tfs,cobertura,istanbul,monorepo,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 r

我有一个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中添加构建步骤的情况下发布所有覆盖率报告?

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

此任务的参数是摘要文件,与的测试结果文件不同

文件结构中有两个
coverage.xml
文件。所以它将只使用第一个匹配项,正如消息中提到的。该任务的一部分,供您参考


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

您证实了我的担心。然而,在我的monorepo中有相当多的项目。为这些包中的每一个添加任务肯定会增加现有包和未来新包的开销。但是,如果没有其他方法,那么我想我最终会采用这种方法。@PatrickLu MSFT,即使我想使用两个coverage.xml文件显示代码覆盖率结果,我甚至使用了两个“发布代码覆盖率结果”任务,但TFS 2017构建定义仅显示上一个任务的代码覆盖率。是否有其他方法可以使用两个覆盖率文件显示代码覆盖率?@SRP您可以使用**/coverage.cobertura.xml作为summaryFileLocation参数。然后PublishCodeCoverageResults@1任务将从所有测试项目创建摘要html报告。悬停仍然有一个结果发布到devops statistics,但报告包含所有文件的结果。@djsowa,我们可以使用TFS Marketplace中的报告生成器任务显示多个cobertura.xml的代码覆盖率结果。此任务将所有cobertura.xml文件转换为单个cobertura.xml,然后我们可以在发布代码覆盖率结果中使用此文件来显示我们的codecoverage。