我已将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运行它们?
答案 0 :(得分:1)
我的解决方案是将我的Team Foundation Client从2012年升级到2013年。2012版本已知超时问题,升级到2013年已经解决了这些问题。
答案 1 :(得分:0)
我遇到了同样的问题(TeamCity构建从TFS获取的代码将无限期地停留在更新源阶段,阻止代理)。
我的解决方案是确保TeamCity Build Agent在与TeamCity Server相同的服务帐户下运行。服务器将能够访问TFS项目并指示代理进行构建,但代理本身在未经授权时会卡住。
修复帐号不匹配后,一切都按原样开始工作。
作为旁注,当设置参数“teamcity.tfs.mode = java”时,TeamCity代理不会卡住,而是失败并带有指示性错误消息(详细说明当前服务帐户名称),如果它在未经授权的帐户下运行。