TFS 2015. $(var.SourceLocation)变量在gated-check in中不可用

时间:2017-01-20 12:01:57

标签: azure-devops tfsbuild tfs2015

我们正在从旧的XAML构建定义迁移到新的TFS 2015构建。在旧的我们有门控检查,这是正常的。在新的,我们有" Triggers"标签。但是,我想使用触发构建的提交ID。 变量$(Build.SourceVersion)负责这一点,但是对于gated-check,它没有被设置。 它看起来是正确的,因为TFS尚未接受提交。

问题是如何在门控检查或CI之后获取此提交ID?

我是否应该为门控签入创建另一个版本,只需编译我们的解决方案,只有成功才会触发CI?

2 个答案:

答案 0 :(得分:1)

无法获取在门禁签到期间未签入的变更集ID。请检查下面的屏幕截图,检查门控更改是在构建过程的最后一步,无法控制。构建完成后,变量$(Build.SourceVersion)将自动更新。因此,在构建完成之前,我们无法获取尚未签入的变更集ID。

enter image description here

您需要使用已完成的TFS REST API to get the build,然后获取" sourceVersion":

GET http://{instance}/DefaultCollection/{project}/_apis/build/builds/{buildId}?api-version={version}

答案 1 :(得分:0)

到目前为止,我最终还是没有干净的解决方法,但我们的管理层已经接受了。 我创建了两个构建定义:一个用于gated-check in,一个用于CI。 一旦有人检查了一些门禁的登机火灾。如果成功完成,将触发CI构建。请注意UI上的相应复选框:

gated CI

这不是那么干净的解决方案,但它对我有用。