TFS 2015. $(var.SourceLocation) 变量在 gated-check in 时不可用
TFS 2015. the $(var.SourceLocation) variable is not available at gated-check in
我们正在从旧的 XAML
构建定义迁移到新的 TFS 2015 构建。在过去,我们有门控检查,工作正常。在新版本中,我们在 "Triggers" 选项卡上有这样的选项。但是我想使用触发构建的提交 ID。
变量 $(Build.SourceVersion)
对此负责,但未设置门控检查。
它看起来是正确的,因为提交还没有被 TFS 接受。
问题是如何在门控签入期间或 CI 之后获取此提交 ID?
我是否应该为门控签入创建另一个构建,它只编译我们的解决方案并且只有在成功时才会触发 CI?
无法获取在 gated check-in 期间未签入的变更集 ID。请检查下面的屏幕截图,检查门控更改是构建过程的最后一步,无法控制。构建完成后,变量 $(Build.SourceVersion)
将自动更新。因此,在构建完成之前,我们无法获取尚未签入的变更集 ID。
您需要使用已完成的 TFS REST API to get the build,然后获取 "sourceVersion":
GET http://{instance}/DefaultCollection/{project}/_apis/build/builds/{buildId}?api-version={version}
到目前为止,我最终得到了不干净的解决方法,但它被我们的管理层接受了。
我创建了两个构建定义:一个用于 gated-check,一个用于 CI。
一旦有人签入 gated check-in 就会触发。如果成功完成,将触发 CI 构建。请注意 UI 上的相应复选框:
这个解决方案不是很干净,但对我有用。
我们正在从旧的 XAML
构建定义迁移到新的 TFS 2015 构建。在过去,我们有门控检查,工作正常。在新版本中,我们在 "Triggers" 选项卡上有这样的选项。但是我想使用触发构建的提交 ID。
变量 $(Build.SourceVersion)
对此负责,但未设置门控检查。
它看起来是正确的,因为提交还没有被 TFS 接受。
问题是如何在门控签入期间或 CI 之后获取此提交 ID?
我是否应该为门控签入创建另一个构建,它只编译我们的解决方案并且只有在成功时才会触发 CI?
无法获取在 gated check-in 期间未签入的变更集 ID。请检查下面的屏幕截图,检查门控更改是构建过程的最后一步,无法控制。构建完成后,变量 $(Build.SourceVersion)
将自动更新。因此,在构建完成之前,我们无法获取尚未签入的变更集 ID。
您需要使用已完成的 TFS REST API to get the build,然后获取 "sourceVersion":
GET http://{instance}/DefaultCollection/{project}/_apis/build/builds/{buildId}?api-version={version}
到目前为止,我最终得到了不干净的解决方法,但它被我们的管理层接受了。 我创建了两个构建定义:一个用于 gated-check,一个用于 CI。 一旦有人签入 gated check-in 就会触发。如果成功完成,将触发 CI 构建。请注意 UI 上的相应复选框:
这个解决方案不是很干净,但对我有用。