从TFS更新源时,TeamCity挂起

时间:2015-08-05 13:20:34

标签: tfs teamcity

我已将TeamCity配置为使用我们的TFS回购。我已配置VCS Root并使用“测试连接”以确保设置都正确。当我运行构建时,它会进入“正在更新源代码”并挂起。这是构建日志。

[13:33:45]Collecting changes in 1 VCS root
[13:33:47]Clearing temporary directory: D:\TeamCity\buildAgent\temp\buildTmp
[13:33:47]Publishing internal artifacts
[13:33:48]Using vcs information from server. Reason: no revision information for build configuration "Build Development trunk" and checkout directory D:\TeamCity\buildAgent\work\db23c120e1319dcb on agent
[13:33:48]Clean build enabled: removing old files from D:\TeamCity\buildAgent\work\db23c120e1319dcb
[13:33:48]Checkout directory: D:\TeamCity\buildAgent\work\db23c120e1319dcb
[13:33:48]Updating sources: server side checkout (1m:21s)
[13:33:48][Updating sources] Will perform clean checkout
[13:33:48][Updating sources] Clean checkout reasons
[13:33:50][Updating sources] Building and caching clean patch for VCS root: Development trunk

结帐文件夹为空。有什么想法吗?

修改

我编写了一个Windows批处理文件,它从TFS中获取代码,而不是使用TeamCity来执行此操作。从Windows命令提示符运行时,我的批处理文件运行完美,但从TeamCity运行时则失败。我正在使用TF.EXE的完全限定路径,因为TeamCity似乎无法找到TF.EXE(即使路径已添加到PATH环境变量)。

我的批处理文件在尝试获取源代码之前正确配置了TFS工作区。但它仍然失败。

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\tf.exe" workspaces /collection:http://code-srvr1:8080/tfs/DefaultCollection
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\tf.exe" workspaces /s:http://code-srvr1:8080/tfs/DefaultCollection
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\tf.exe" workfold //fails!!
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\tf.exe" get $/MSM\Development\Trunk /force /recursive //fails!!

我得到的错误是“无法确定工作区。您可以通过运行'tf workspaces / collection:TeamProjectCollectionUrl'来纠正这个问题”

但可以看出,我已经在批处理文件中指定了工作区。

为什么这些命令可以从Windows命令行运行但是从TeamCity失败的任何想法?如何从TeamCity运行它们?

2 个答案:

答案 0 :(得分:1)

我的解决方案是将我的Team Foundation Client从2012年升级到2013年。2012版本已知超时问题,升级到2013年已经解决了这些问题。

答案 1 :(得分:0)

我遇到了同样的问题(TeamCity构建从TFS获取的代码将无限期地停留在更新源阶段,阻止代理)。

我的解决方案是确保TeamCity Build Agent在与TeamCity Server相同的服务帐户下运行。服务器将能够访问TFS项目并指示代理进行构建,但代理本身在未经授权时会卡住。

修复帐号不匹配后,一切都按原样开始工作。

作为旁注,当设置参数“teamcity.tfs.mode = java”时,TeamCity代理不会卡住,而是失败并带有指示性错误消息(详细说明当前服务帐户名称),如果它在未经授权的帐户下运行。