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

如何获取当前Azure DevOps流水线的runId以调用Get Test Run By Id API

关于Azure DevOps中Get Test Run By Id API的runId说明及获取方法

一、什么是runId

runId是Azure DevOps中**测试运行(Test Run)**的唯一标识符。每次执行测试任务(比如流水线中的VSTest任务、手动触发的测试计划执行)都会生成一个独立的测试运行实例,runId就是用来精准定位这个实例的ID,通过它可以调用Get Test Run By Id API获取该测试运行的详细结果、状态等信息。

二、获取当前运行流水线对应的测试runId的方法

1. 流水线任务直接输出变量(最简便)

如果你的流水线使用了VSTest任务执行测试,可通过任务输出变量直接获取runId:

  • 给VSTest任务设置自定义名称(比如RunUnitTests)
  • 确保开启Publish test results and upload run attachments选项(默认启用)
  • 在后续任务中,通过$(RunUnitTests.TestRunId)变量直接引用该测试任务生成的runId

2. 调用测试运行列表API筛选获取

若无法通过任务变量获取,或需批量筛选,可调用列出测试运行的API,结合流水线内置变量过滤当前流水线对应的测试运行:

核心筛选参数:

  • CI构建流水线:使用buildId=$(Build.BuildId)作为筛选条件(Build.BuildId是流水线内置变量,代表当前构建ID)
  • Release发布流水线:使用releaseId=$(Release.ReleaseId)作为筛选条件(Release.ReleaseId是发布流水线内置变量)

示例PowerShell脚本:

在流水线中添加PowerShell任务,执行以下代码获取并将runId设为流水线变量:

# 读取流水线内置变量
$orgUri = "$(System.CollectionUri)"
$projectName = "$(System.TeamProject)"
$buildId = "$(Build.BuildId)"
$accessToken = "$(System.AccessToken)"

# 构建认证头
$base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$accessToken"))
$headers = @{ Authorization = "Basic $base64Auth" }

# 调用API筛选当前Build对应的测试运行
$apiUrl = "$orgUri/$projectName/_apis/test/runs?buildId=$buildId&api-version=7.1-preview.3"
$testRuns = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get

# 提取第一个测试运行的runId(若有多个测试任务,可根据testPlanId/testSuiteId进一步筛选)
$targetRunId = $testRuns.value[0].id

# 设置为流水线变量,供后续任务使用
Write-Host "##vso[task.setvariable variable=CurrentTestRunId;]$targetRunId"

补充精准筛选条件:

若一个流水线包含多个测试任务(对应多个测试运行),可在API请求中添加额外参数缩小范围:

  • testPlanId={测试计划ID}:指定目标测试计划
  • testSuiteId={测试套件ID}:指定目标测试套件
  • state={状态}:比如Completed、InProgress筛选测试运行状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:41:30