是否有API调用来获取给定其分支名称的VSTS工作项

时间:2018-02-20 00:59:55

标签: git azure-devops

我有一个powershell脚本作为我的VSTS构建定义的一部分。在这里,我可以访问触发构建的分支名称。

每个分支属于相关的工作项(通过工作项的“创建新分支”链接完成)。

问题:如何在我的脚本中获取工作项ID?

我认为一个地方可能是WIQL但无法找到与工作项分支对应的字段名称(如果有的话): https://docs.microsoft.com/en-us/vsts/work/work-items/guidance/work-item-field

编辑1 :根据@starian chen-MSFT的回答

当我运行以下动态查询时:

$body = @{query = "Select [System.Id], [System.AssignedTo] From WorkItemLinks WHERE Source.[System.TeamProject] = 'MyProj' and (Source.[System.State] = 'New' OR Source.[System.State] = 'Active') and Source.[System.ExternalLinkCount] > 0"}

在uri:

$uri = "https://MyAccount.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0"

我在返回的回复中得到以下内容:

"workItemRelations":  [
  {
    "rel":  null,
    "source":  null,
    "target":  "@{id=11; url=https://MyProj.visualstudio.com/DefaultCollection/_apis/wit/workItems/11}"
  },
  {
    "rel":  "System.LinkTypes.Hierarchy-Forward",
    "source":  "@{id=11; url=https://MyProj.visualstudio.com/DefaultCollection/_apis/wit/workItems/11}",
    "target":  "@{id=3; url=https://MyProj.visualstudio.com/DefaultCollection/_apis/wit/workItems/3}"
  }
]

问题:只有ID为11的工作项才有外部链接,因此不知道如何阻止Hierarchy-Forward条目进入。 另外,如何在那里获得AssignedTo值?它似乎没有出现在回复中。

1 个答案:

答案 0 :(得分:1)

您无法直接通过查询获取带分支名称的工作项。

您可以使用该分支名称添加标记,然后很容易获得具有分支名称的工作项。

另一种方式是:

  1. 通过Query REST API检索工作项:Run a stored query。 (包括此过滤器以查询:External Link Count >= 1
  2. 使用链接With links and attachments
  3. 检索这些工作项
  4. 检查哪个工作项包含当前分支链接。
  5. 更新

    获取分支名称的简单代码:

    $branchUrl="vstfs:///Git/Ref/b8ee4b6d-d5a8-4e3d-a7f8-f2da9713a830%2Fed10a5f5-f558-4dc2-bce9-dee7bfe617b0%2FGBworkitembranch"
    $branchName=$branchUrl.Split("%2F")[-1]
    $branchName=$branchName.Substring(2,$branchName.Length-2)