我想从Azure管道获取数据,包括代码覆盖率和代码行

zkure5ic  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(118)

我刚刚开始使用Azure Pipelines,并且刚刚开始使用它。
我一直在创建管道构建,然后使用GET请求将数据发送到网站以显示结果。
我现在已经被问到,如果我可以得到一行代码和代码覆盖率添加到网站。这意味着我需要更新我的GET请求以包含此内容。
通过使用一些更新的yaml代码,我已经能够在管道日志文件中记录代码行。这将在日志中创建一个文本文件。
令人烦恼的是,这些结果不会添加到GET请求中。我用的是端点https://dev.azure.com/{organization}/_apis/public/build/builds/{buildId}/ticketedlogs?projectId={projectId}&api-version=4.1-preview.1
https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs/{runId}/logs/{logId}?api-version=7.1-preview.1
我可以得到所有构建的列表,但没有其他的。我似乎无法瞄准一个确切的构建或项目。
我不能为代码覆盖率工作做任何事情。我试过床单,但没有成功。我一直收到错误消息说请求与net 5不兼容.但我在net 7上,没有什么说net 5。
我需要以某种方式将数据发送到我的网站。
我正在考虑的事情,
1.向yaml管道添加post请求
1.获取日志zip文件,然后处理结果以查找行号
1.将所有内容发送到Google Drive,然后使用API从驱动器中获取文件夹和数据
这是我失败的代码覆盖率:

- stage: 'Test'
  displayName: 'Test stage'
  jobs:
  - job: 'TestWithCodeCoverage'
    displayName: 'Test with Code Coverage'

    steps:
    - task: DotNetCoreCLI@2
      inputs:
        command: 'test'
        projects: '**/*.csproj'
        arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura'
        publishTestResults: true
        testRunTitle: 'Code Coverage'

    - script: |
        dotnet tool install -g coverlet.console
        coverlet "$(Build.SourcesDirectory)/PipelineRepo.Tests/bin/$(buildConfiguration)/netcoreappX.Y/PipelineRepo.Tests.dll" --target "dotnet" --targetargs "test PipelineRepo.Tests/PipelineRepo.Tests.csproj --configuration $(buildConfiguration)" --format cobertura
      displayName: 'Calculate Code Coverage'

    - task: PublishCodeCoverageResults@1
      displayName: 'Publish Code Coverage Results'
      inputs:
        codeCoverageTool: 'Cobertura'
        summaryFileLocation: '$(Agent.TempDirectory)/**/*.cobertura.xml'
        reportDirectory: '$(Build.SourcesDirectory)/CodeCoverageReports'

//如何将代码行保存到日志中

- powershell: |
    $loc = Get-ChildItem -Recurse -File -Path $(System.DefaultWorkingDirectory) -Include *.cs,*.vb,*.js,*.ts,*.html,*.css,*.scss,*.json | Get-Content | Measure-Object -Line
    Write-Host "Total lines of code: $($loc.Lines)"
  displayName: 'Count Lines of Code xxx'
  condition: succeeded()

我很困惑,想知道是否有人知道如何使用API来做到这一点,或者只是有一个巧妙的方法来发送数据给我自己。

myzjeezk

myzjeezk1#

如果它对您有帮助,则不使用usre,但您可以使用additionalCodeCoverageFiles选项将aQuery文件作为工件发布,使用模式将更多信息上传到报告:

task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: 'JaCoCo' # 'Cobertura' | 'JaCoCo'. Required. Code coverage tool. Default: JaCoCo.
    summaryFileLocation: # string. Required. Summary file. 
    #pathToSources: # string. Path to Source files. 
    #reportDirectory: # string. Report directory. 
    additionalCodeCoverageFiles: # string. Additional files. 
    #failIfCoverageEmpty: false # boolean. Fail when code coverage results are missing. Default: false.

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/publish-code-coverage-results-v1?view=azure-pipelines

相关问题