将多个现有工作项链接到排队构建(来自 Azure Devops SDK)

Linking multiple existing work items to queued build (from Azure Devops SDK)

在 Azure Devops REST API 中,我想在触发构建时 link 一个 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.方法一

与UI操作相同,要link要构建的现有工作项,只需要更新构建定义中的一个选项:

这是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 表示它是否会创建 links 来处理构建完成后 linked 到关联更改的项目。为了达到你想要的效果,在这里,请将 enabled 值设置为 true。 id值是固定的,代表这个选项,所以这里不用管这个id值。

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

但是,您应该关心的是此更新应该在构建触发之前完成。因此它会在构建完成后自动创建 link 到现有的 WIT。

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


  • 2。方法 2

如果以上不是您想要的,而您只想 link 在触发构建时构建工作项。不敢说,没有这么直接的 API 可以完成的。

您可能需要使用 2 个 API:其中之一是 queue build, and another API is add this build link to work item

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

[
    {
        "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。与方法一不同的是,在该方法中,您可以自定义要添加构建link的工作项id。