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

如何从Azure DevOps工作项关联的拉取请求获取并检查成功流水线

获取Azure DevOps拉取请求/工作项关联的流水线及运行状态

核心实现思路

要关联拉取请求(PR)/提交到对应流水线,需借助Azure DevOps客户端库中的BuildHttpClient,通过PR的提交ID或工作项ID,查询关联的构建实例及对应的流水线定义。

具体操作步骤

1. 初始化BuildHttpClient

基于已有的Vss连接实例,创建BuildHttpClient:

using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.VisualStudio.Services.Client;

// 假设你已通过WorkItem/PullRequest获取到VssConnection实例
var buildClient = connection.GetClient<BuildHttpClient>();

2. 通过拉取请求查询关联流水线

利用PR的提交ID,查询包含该提交的已完成构建,再关联到对应的流水线定义:

// 假设已有PullRequest对象pullRequest
var projectName = pullRequest.Repository.Project.Name;
var commitId = pullRequest.LastMergeSourceCommit.CommitId;

// 查询包含目标提交的已完成构建
var builds = await buildClient.GetBuildsAsync(
    project: projectName,
    repositoryId: pullRequest.Repository.Id.ToString(),
    commitId: commitId,
    statusFilter: BuildStatus.Completed
);

// 遍历构建获取流水线及运行状态
foreach (var build in builds)
{
    var pipeline = await buildClient.GetDefinitionAsync(projectName, build.Definition.Id);
    bool isSuccess = build.Result == BuildResult.Succeeded;
    
    // 按需处理流水线信息
    Console.WriteLine($"流水线名称: {pipeline.Name}, 运行状态: {(isSuccess ? "成功" : "失败")}");
}

3. 通过工作项查询关联流水线

通过工作项ID,查询关联的构建实例,进而获取流水线信息:

// 假设已有WorkItem对象workItem
var projectName = workItem.Project.Name;

// 查询关联到该工作项的已完成构建
var buildRefs = await buildClient.GetBuildsAsync(
    project: projectName,
    workItemId: workItem.Id,
    statusFilter: BuildStatus.Completed
);

foreach (var buildRef in buildRefs)
{
    var pipeline = await buildClient.GetDefinitionAsync(projectName, buildRef.Definition.Id);
    bool isSuccess = buildRef.Result == BuildResult.Succeeded;
    
    // 按需处理流水线信息
    Console.WriteLine($"流水线ID: {pipeline.Id}, 最后运行结果: {(isSuccess ? "成功" : "失败")}");
}

4. 关键注意事项

  • 确保服务账号拥有**Build (Read)**权限,避免权限不足报错。
  • 若PR触发多次构建,可通过build.StartTime筛选最新的构建实例。
  • BuildDefinition对应流水线配置对象,Build对应单次构建运行实例,二者需区分使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:45:35