You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PublishCodeCoverageResults@2 v2.252.1任务超时错误求助

问题:Azure DevOps PublishCodeCoverageResults@2 v2.252.1版本发布覆盖率报告超时

我们使用以下任务配置发布Cobertura测试覆盖率报告:

- task: PublishCodeCoverageResults@2
  displayName: 'Publish code coverage results'
  condition: eq(variables['isTestRun'], 'true')
  continueOnError: true
  timeoutInMinutes: 1
  inputs:
    summaryFileLocation: $(Build.Repository.LocalPath)/$(Build.Repository.Name)/coverage/coverage/cobertura.xml
  env:
    NODE_NO_WARNINGS: 1

该任务在v2.48.1版本时运行正常,但升级至v2.252.1版本后,出现HTTP请求超时错误,具体日志如下:

Starting: Publish code coverage results
==============================================================================
Task         : Publish code coverage results v2
Description  : Publish any of the code coverage results from a build
Version      : 2.252.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/test/publish-code-coverage-results
==============================================================================
Found 1 result(s) matching pattern: /azp/agent/_work/1/s/salesforce-playground/coverage/coverage/cobertura.xml
/azp/agent/_work/1/s/salesforce-playground/coverage/coverage/cobertura.xml
/azp/agent/_work/_tasks/PublishCodeCoverageResults_2a7ebc54-c13e-490e-81a5-d7561ab7cd97/2.252.1/node_modules/coveragepublisher/CoveragePublisher/linux-x64/CoveragePublisher.Console /azp/agent/_work/1/s/salesforce-playground/coverage/coverage/cobertura.xml --reportDirectory /azp/agent/_work/_temp/df03de10-4cf4-43f7-9c5a-dba8965fb78d
Could not connect to Azure Pipelines. System.TimeoutException: The HTTP request timed out after 00:00:30.
 ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter`1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Common.VssHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at Microsoft.VisualStudio.Services.Common.VssHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Common.VssHttpRetryMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync(HttpRequestMessage message, HttpCompletionOption completionOption, Object userState, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync[T](HttpRequestMessage message, Object userState, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.GetConnectionDataAsync(ConnectOptions connectOptions, Int64 lastChangeId, CancellationToken cancellationToken, Object userState)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.GetConnectionDataAsync(ConnectOptions connectOptions, Int32 lastChangeId, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.ConnectAsync(ConnectOptions connectOptions, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.LocationService.CreateDataProviderAsync(String location, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.LocationService.ResolveLocationDataAsync(Guid locationAreaIdentifier, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.LocationService.ResolveLocationDataAsync(Guid locationAreaIdentifier, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.LocationService.GetLocationDataAsync(Guid locationAreaIdentifier, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientInstanceAsync(Type managedType, Guid serviceIdentifier, CancellationToken cancellationToken, VssHttpRequestSettings settings, DelegatingHandler[] handlers)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientServiceImplAsync(Type requestedType, Guid serviceIdentifier, Func`4 getInstanceAsync, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientAsync[T](Guid serviceIdentifier, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.TaskExtensions.SyncResult[T](Task`1 task)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClient[T](Guid serviceIdentifier)
   at Microsoft.TeamFoundation.TestClient.PublishTestResults.VssConnectionHelper.GetClient[T](Guid serviceIdentifier)
   at Microsoft.TeamFoundation.TestClient.PublishTestResults.PublishTestResultsCacheManager..ctor(IVssConnectionHelper vssConnectionHelper, TraceListener traceListener)
   at Microsoft.TeamFoundation.TestClient.PublishTestResults.TestLogStore..ctor(IVssConnectionHelper vssConnectionHelper, TraceListener traceListener)
   at Microsoft.TeamFoundation.TestClient.PublishTestResults.TestLogStore..ctor(VssConnection vssConnection, TraceListener traceListener)
   at Microsoft.Azure.Pipelines.CoveragePublisher.Publishers.DefaultPublisher.LogStoreHelper..ctor(IClientFactory clientFactory) in D:\a\1\s\src\CoveragePublisher\Publishers\DefaultPublisher\Helpers\LogStoreHelper.cs:line 20
   at Microsoft.Azure.Pipelines.CoveragePublisher.Publishers.DefaultPublisher.AzurePipelinesPublisher..ctor(Boolean enableTelemetry) in D:\a\1\s\src\CoveragePublisher\Publishers\DefaultPublisher\AzurePipelinesPublisher.cs:line 64
   at Microsoft.Azure.Pipelines.CoveragePublisher.Program.ProcessCoverage(PublisherConfiguration config, CancellationToken cancellationToken) in D:\a\1\s\src\CoveragePublisher.Console\Program.cs:line 43

Finishing: Publish code coverage results
解决方案汇总
  • 回滚至稳定版本:直接指定使用v2.48.1版本的任务,修改任务定义为:

    - task: PublishCodeCoverageResults@2.48.1
      displayName: 'Publish code coverage results'
      condition: eq(variables['isTestRun'], 'true')
      continueOnError: true
      timeoutInMinutes: 1
      inputs:
        summaryFileLocation: $(Build.Repository.LocalPath)/$(Build.Repository.Name)/coverage/coverage/cobertura.xml
      env:
        NODE_NO_WARNINGS: 1
    

    此方法可快速恢复流水线正常运行,避免新版本带来的问题。

  • 延长任务超时时间:当前任务仅设置1分钟超时,可适当延长至3-5分钟,给任务足够的连接和处理时间:

    timeoutInMinutes: 3
    
  • 检查并优化覆盖率文件:若cobertura.xml文件过大,新版本任务处理时可能因负载过高触发超时。可通过以下方式优化:

    • 排除测试文件、第三方依赖等无需统计的内容
    • 拆分覆盖率报告为多个小文件,分批发布
  • 排查网络连接问题:如果使用自托管代理,需确认:

    • 代理机器能正常访问Azure DevOps服务端,无防火墙或代理拦截
    • 代理服务器配置正确,新版本任务可能对网络请求的处理逻辑有变更,需确保相关域名在白名单中
  • 关注官方修复动态:该版本的超时问题属于已知的兼容性问题,部分用户反馈在后续小版本更新中得到修复,可关注任务的更新日志,待修复版本发布后再升级。

内容的提问来源于stack exchange,提问作者Sambit Swain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:05:54