9

我已将 Git 存储库从网络上的共享文件夹移至运行 gitolite 的 SSH 服务器。我添加了一个公钥/私钥供 TeamCity 使用,并将 VCS 根指向它。这一切正常,因为测试连接成功并且我的构建配置显示了待处理的更改。

但是,当 TeamCity 尝试获取这些挂起的更改时,我收到以下错误:

'git fetch' command failed.
exception: Timeout exception

切换到详细日志记录我看到它在 90 秒后超时 - 我希望在正常情况下获取这些更改只需几秒钟。

自从我开始尝试解决问题以来,我已将 VCS 根更改为“默认私钥”并添加了所需的 .ssh 文件夹,其中包含 config、id_rsa 和 known_hosts 文件。我在日志中看到了指纹和密码消息,直到我将必要的内容放入这些文件中,现在我的服务器又回到了超时异常状态,就像我在 VCS 根目录中指定密钥时一样。

如果我从命令行运行 Git,我可以在没有任何提示的情况下克隆存储库(当我按上述方式设置 .ssh 文件夹时)。这是来自不同的用户帐户,因为 TC 在默认 SYSTEM 帐户下作为服务运行,但我认为这不是原因,因为正如我所说,我可以看到 TC 已经为此获取了对 .ssh 文件夹的更改帐户。

有什么问题?

4

3 回答 3

2

您已经为 TeamCity 服务器设置了密钥,但您是否也为代理设置了密钥?这可以解释为什么在配置中测试连接有效,但在代理执行时它不起作用。

快速调试问题的方法:

在 VCS 设置中,更改VCS Checkout modeAutomatically on server并查看是否有效?

更新:

您可以登录到 TeamCity 服务器并git clone以用户身份从您的 git 存储库运行 manulateamcity吗?通过这种方式,您可以看到它正在工作,也可以保存为受信任的主机等。

于 2011-08-08T16:17:41.157 回答
0

我没有使用过团队城市,但我使用了 GO(来自 thinkworks)进行持续集成,在那里我遇到了类似的问题。

您能否检查在构建代理上运行任务的用户的环境变量路径。如果您使用的是 msysgit,则来自 msysgit 的 bin 和 cmd 文件夹都应该在路径中。

于 2012-06-25T06:21:57.097 回答
0

It happens when you have huge repo. You can follow next recommendation:

Increase the timeout in user machine for OSX or Linux:

  1. Create ~/.ssh/config file (if it doesn't exist yet)
  2. Add SSH ServerAliveInterval ServerAliveCountMax settings into the file, eg:

Host *
 ServerAliveInterval 86400
 ServerAliveCountMax 4

于 2016-10-07T07:50:49.637 回答