【问题标题】:vNext TFS 2015 Builds - Remove Changeset and Work Item Associations From Build, Then Re-add ThemvNext TFS 2015 构建 - 从构建中删除变更集和工作项关联,然后重新添加它们
【发布时间】:2017-03-31 07:49:24
【问题描述】:

目标环境:TFS 2015 更新 3

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

因此,我需要在 vNext 构建过程结束时添加一个任务/脚本以删除这些关联(然后向发布管理添加一个类似的任务以重新关联它们)。这不是世界上最简单的任务,但通过 TFS REST API 似乎应该是可行的。

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

这些变更集/工作项与构建之间的关联是如何定义的?

【问题讨论】:

    标签: tfs build vnext


    【解决方案1】:

    没有这样的Rest API 可以实现删除变更集。在 XAML 构建中,相关信息存储在名为 dto.tbl_BuildDefinition 的 SQL 表中,您希望为此重新关联变更集并更改 LastBuildUriLastGoodBuildUriLastGoodBuildLabel 中的值。详细请参考这个链接:Re-associate changesets and work items with buildvNext 构建定义,我在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

    【讨论】:

    • 感谢您的意见。我目前正在调查您的链接,看看我能用其中包含的信息做什么。
    • 天哪,我不认为这是完全可能的。我绝对可以使用您发布的内容将工作项添加到构建中,但这些链接与构建系统自动关联的链接不同。而且我似乎无法删除这些,尽管它们在其他方面似乎表现相似。变更集似乎也无法删除。你的回答让我得到了迄今为​​止我见过的最接近的。也许微软会在不久的将来的某一天完全允许这样做。
    • 我刚刚与 Microsoft 进行了交谈,TFS 的 2017 本地版本能够选择要区分的版本(例如,如果您有已成功部署到 Prod 的 Build #40,那么还有 9 个从未通过测试的构建和再次进入 Prod 的 Build #50,您可以在您想要的任何构建 [包括 #50 和 #40] 之间生成工作项和变更集列表,从而提出我的原始请求无关)。优点:不再需要我的复杂请求 缺点:我们必须升级到 2017 才能使用它
    • @mattbbpl 感谢您的友好分享。
    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多