vNext TFS 2015 构建 - 从构建中删除变更集和工作项关联,然后重新添加它们

vNext TFS 2015 Builds - Remove Changeset and Work Item Associations From Build, Then Re-add Them

目标环境:TFS 2015 更新 3

我们正在尝试让 vNext 构建系统允许我们仅在通过发布管理部署构建后将变更集和工作项关联到构建。但是,TFS vNext 构建系统会在构建时自动将这些项目关联到构建(基于上次成功的构建)。旧的 XAML 构建系统有一个 属性 可以关闭它,称为 SkipGetChangesetsAndUpdateWorkItems,但它不再存在于新系统中。

因此,我需要在 vNext 构建过程的末尾添加一个 task/script 来删除这些关联(然后向 Release Management 添加类似的任务以重新关联它们)。这不是世界上最简单的任务,但似乎可以通过 TFS REST 实现一些事情 API.

然而,我终其一生都无法弄清楚这些联想是如何形成的。变更集的 JSON 似乎没有提到关联的构建,构建的 JSON 似乎没有提到关联的变更集列表。

Changesets/Work 项目和构建之间的这些关联是如何定义的?

没有这样的 Rest API 可以实现删除变更集。在 XAML 构建中,相关信息存储在名为 dto.tbl_BuildDefinition 的 SQL table 中,您要为其重新关联变更集并更改 LastBuildUri 中的值,LastGoodBuildUriLastGoodBuildLabel 。详情请参考这个link: vNext 构建定义,我在SQL 中没有找到类似的东西。但是一定有什么地方存储了关联。

对于workitem和build的关联,有一个方法叫做$WorkItemAssociatedURL比如

$WorkItemAssociatedURL = $collectionURL + $project + “/_apis/build/builds/” + $BuildId + “/workitems?api-version=2.0”

$ResponseJSON = Invoke-RestMethod -Uri $WorkItemAssociatedURL -ContentType “application/json” -headers $headers -Method GET

更多详细信息可以参考这篇博客:Build association with work Items in vNext