2

当尝试使用“ReportGenerator”工具作为 Azure devops YAML 管道的一部分创建报告时,虽然我在上一步中安装了该工具,但仍会引发以下错误。

- script: dotnet tool install --global dotnet-reportgenerator-globaltool --version 4.6.1
  displayName: 'Install ReportGenerator tool'
  continueOnError: true

- script: reportgenerator "-reports:$(Agent.TempDirectory)/**/*.cobertura.xml" "-targetdir:$(Build.SourcesDirectory)/coverlet/reports" -reporttypes:Cobertura;htmlInline
  displayName: Generate code coverage report
  continueOnError: true

错误:'reportgenerator' 未被识别为内部或外部命令、可运行程序或批处理文件。##[错误]Cmd.exe 以代码“1”退出。

添加日志安装步骤:脚本内容:dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools --version 4.6.1 ====================== ==== 启动命令输出 ============================ "C:\windows\system32\cmd.exe" /D /E :ON /V:OFF /S /C "CALL "E:\Agent_work_temp\d9535a65-152b-4822-a4f2-7e58c11f2418.cmd"" 您可以使用以下命令调用该工具:reportgenerator Tool 'dotnet-reportgenerator-globaltool' (版本“4.6.1”)已成功安装。完成:安装 ReportGenerator 工具

执行工具:脚本内容:reportgenerator "-reports:E:\Agent_work_temp/**/*.cobertura.xml" "-targetdir:E:\Agent_work\79\s/coverlet/reports" -reporttypes:Cobertura;htmlInline == ======================== 启动命令输出 ======================= ==== "C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "E:\Agent_work_temp\53dbc699-e878-4458-aaf2-8e69e5c4f09a.cmd" " 'reportgenerator' 不是内部或外部命令、可运行程序或批处理文件。##[错误]Cmd.exe 以代码“1”退出。

4

3 回答 3

1

以下 YAML 文件应该可以完成这项工作:

- script: dotnet tool install --tool-path tools dotnet-reportgenerator-globaltool --version 4.6.1
  displayName: 'Install ReportGenerator tool'
  continueOnError: true

- script: ./tools/reportgenerator "-reports:$(Agent.TempDirectory)/**/*.cobertura.xml" "-targetdir:$(Build.SourcesDirectory)/coverlet/reports" "-reporttypes:Cobertura;HtmlInline"

您还可以使用 Azure DevOps 扩展:
https ://marketplace.visualstudio.com/items?itemName=Palmmedia.reportgenerator

用法:

- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
  displayName: ReportGenerator
  inputs:
    reports: '$(Agent.TempDirectory)/**/*.cobertura.xml'
    targetdir: '$(Build.SourcesDirectory)/coverlet/reports'
    reporttypes: 'Cobertura;HtmlInline'
于 2020-07-03T09:53:50.687 回答
1

当您尝试在 Linux 机器上执行此操作时,存在一个已知错误。安装报告生成器后,请尝试添加此附加步骤以更新 PATH:

- script: echo "##vso[task.prependpath]$HOME/.dotnet/tools"

所以整个解决方案看起来像这样:

- task: DotNetCoreCLI@2
    displayName: Install ReportGenerator Global Tool
    inputs:
      command: custom
      custom: tool
      arguments: install dotnet-reportgenerator-globaltool -g

- script: echo "##vso[task.prependpath]$HOME/.dotnet/tools"
  displayName: 'Update PATH'

- script: reportgenerator "-reports:$(Agent.TempDirectory)/**/*.cobertura.xml" "-targetdir:$(Build.SourcesDirectory)/coverlet/reports" -reporttypes:Cobertura;htmlInline
  displayName: Generate code coverage report
  continueOnError: true
于 2020-07-02T21:26:02.027 回答
0

这是因为您使用的是自托管代理。在代理上安装新软件后,您必须重新启动代理以使新功能显示在池中,以便构建可以运行。

只需转到您的代理机器上的任务管理器并重新启动构建代理服务。

于 2020-07-03T09:12:23.933 回答