将多个现有工作项链接到排队的版本(从Azure Devops SDK)

时间:2019-11-01 16:21:38

标签: azure-devops azure-devops-rest-api

在Azure Devops REST API中,我想在触发生成时链接task \ bug \ story(已存在)。我该怎么办?

checkInTicket可能是一种解决方案,但它是not documented

基于Merlin的响应的有效负载有效:

var payload = new object[] {
    new {
        op = "add",
        path = "/relations/-",
        value =
        new {
            rel = "ArtifactLink",
            url = $"vstfs:///Build/Build/{buildId}",
            attributes = new
            {
                name = "Build"
            }
        }
    }
};

1 个答案:

答案 0 :(得分:1)

  • 1。方法1

与UI操作相同,用于链接要构建的现有工作项,只需要更新构建定义中的一个选项即可:

这是api:

https://dev.azure.com/{org name}/{project name}/_apis/build/definitions/{definition id}?api-version=5.0-preview.6

在其请求正文中,请重点关注以下脚本部分:

"options": [
    {
      "enabled": true,
      "inputs": {
        "branchFilters": "[\"+refs/heads/*\"]",
        "additionalFields": "{}"
      },
      "definition": {
        "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
      }
    }
  ]

enabled表示是否将创建指向工作项的链接,这些工作项将在构建完成后链接到关联的更改。要实现您想要的目标,请在此处将enabled的值设置为true。 id值是固定的,代表此选项,因此这里不必担心此id值。

通过此方法更新构建定义时,请不要忘记在请求正文中增加修订。 revision递增表示将定义更新为新修订。否则 update 操作实际上不会成功。

但是,您应该担心的是,此更新应在生成触发之前完成。这样,它将在构建完成后自动创建到现有WIT的链接。

此外,这只会将此构建链接添加到与更改相关的工作项


  • 2。方法2

如果以上不是您想要的,并且您只想在触发构建时链接要构建的工作项。害怕说,没有这样的直接API可以完成。

您可能需要使用2个API:其中一个是queue build,另一个API是添加此build link to work item

将构建链接添加到工作项的请求正文示例:

[
    {
        "op": "test",
        "path": "/rev",
        "value": "2"
    },
    {
        "op": "add",
        "path": "/relations/-",
        "value":
        {
            "rel": "ArtifactLink",
            "url": "vstfs:///Build/Build/{the build id that you just queued}"
        }
    }
]

此方法需要在将构建放入队列后获取生成的BuildId,然后将其传递给workitem API。与方法1不同,在此方法中,您可以自定义要向其添加构建链接的工作项ID。