【发布时间】:2016-01-14 13:50:44
【问题描述】:
将 teamcity 与 TFS 结合使用,是否可以在不先将其取消搁置到我的工作区的情况下运行搁置集?我找到了只从待定更改中运行它的方法(因此未搁置),但这似乎很奇怪,这是不可能的。
使用 Visual Studio 2008 和 teamcity 添加 8.1。
【问题讨论】:
将 teamcity 与 TFS 结合使用,是否可以在不先将其取消搁置到我的工作区的情况下运行搁置集?我找到了只从待定更改中运行它的方法(因此未搁置),但这似乎很奇怪,这是不可能的。
使用 Visual Studio 2008 和 teamcity 添加 8.1。
【问题讨论】:
TeamCity 的 TFS VCS 插件当前未内置该功能。
作为一种变通方法,您可以使用自定义构建配置参数和自定义构建步骤来执行此操作,该步骤会在构建之前自动取消搁置集。
我在这里创建了一个功能请求:https://youtrack.jetbrains.com/issue/TW-43793
手动解决方法:
创建一个新的构建参数:
姓名:ShelvesetName
种类:Configuration parameter
规格:text description='The shelveset to unshelve in the format |[shelvesetname|[;username|]|]' label='Shelveset Name' validationMode='any' display='normal'
创建一个新的构建步骤:
跑步者类型:Command Line
步骤名称:Unshelve shelveset
执行步骤:If all previous steps finished successfully
运行:Custom script
自定义脚本:if "%ShelvesetName%"=="" exit /b 0
"%VS2013_Path%\tf.exe" unshelve "%ShelvesetName%" "%vcsroot.vcsroot-name.tfs-root%" /recursive /noprompt /login:domain\username,password
您可能需要使用来自代理的适当变量/参数和您正在使用的 Visual Studio 版本更改 VS2013_Path。
您必须将 vcsroot-name 更改为您的 vcs 根的名称,并删除 /login 参数或指定您自己的凭据。
必须将 VCS 根签出模式设置为 Automatically on agent (if supported by VCS roots),TeamCity 才能创建 TFS 工作区,这样才能正常工作。
最后,当您运行自定义构建时,将Parameters 选项卡上的Shelveset Name 字段设置为搁置集的名称,包括所有者,例如shelveset1;domain\username。
【讨论】: