从WorkItem检查Azure DevOps中已完成的管道



对于我正在工作的一个项目,我必须从Azure DevOps WorkItem ID中获得拉取请求和存储库。我使用的是Microsoft.TeamFoundationServer.Client NuGet-Package。

现在我还希望能够检查构建管道是否成功运行,然后再进行进一步的步骤。

我自己想了想,却找不到一篇关于如何做到这一点的文章,所以我想自己问这个问题。

我已经有了:

  • WorkItem对象
  • GitRepository对象PullRequest对象

And I want:

  • 特定Pull Request/Commit的某种形式的管道对象

我希望有一种方法可以做到这一点。

感谢任何帮助或参考。谢谢!

我正在工作,我必须得到一个拉请求和存储库从一个Azure DevOps工作项ID。

对于与工作项相关的pull request,我可以为你写一个c#代码。但是对于存储库,我认为在DevOps概念中存储库本身和工作项之间没有关系(链接提交和工作项是可能的)。

现在我还希望能够检查构建管道是否运行

您的意思是您想要与拉取请求相关的管道运行状态?我检查了sdk定义,没有这样的定义,也没有在REST API。一个可能的解决方案是遵循f12来捕获API以获得构建管道运行id和它的状态。

只是一个演示:

using System;
using System.Threading.Tasks;
using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;
namespace GetPipelineResults
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
string url_string = "https://dev.azure.com/xxx/";
string personalAccessToken = "xxx";
Uri orgUrl = new Uri(url_string);
string project = "xxx";
int workitemId = 122;
var workitem = GetPullRequestAndRepositoryFromWorkItemId(orgUrl,personalAccessToken,workitemId);
var pullRequestUrl = workitem.Result.Relations[0].Url.ToString();
var pullRequestUrl2 = pullRequestUrl.Substring(pullRequestUrl.LastIndexOf('/') + 1);
string[] pullRequestUrl2Array = pullRequestUrl2.Split("%2F");
string pullRequestIdString = pullRequestUrl2Array[pullRequestUrl2Array.Length - 1];

Console.WriteLine(pullRequestIdString);
}
//Get Pull request from work item id
public static async Task<WorkItem> GetPullRequestAndRepositoryFromWorkItemId(Uri orgUrl, string personalAccessToken, int workItemId)
{
VssConnection connection = new VssConnection(orgUrl, new VssBasicCredential(string.Empty, personalAccessToken));
WorkItemTrackingHttpClient workItemTrackingHttpClient = connection.GetClient<WorkItemTrackingHttpClient>();
WorkItemExpand workItemExpand = WorkItemExpand.All;
var workItem = workItemTrackingHttpClient.GetWorkItemAsync(workItemId, expand: workItemExpand).Result;
return workItem;
}

}
}

相关内容

  • 没有找到相关文章

最新更新