我已将 Git 存储库从网络上的共享文件夹移动到运行 gitolite 的 SSH 服务器。我已经添加了一个供 TeamCity 使用的公钥/私钥,并将 VCS 根指向它。这一切都正常,因为测试连接成功并且我的构建配置显示了待处理的更改。
但是,当 TeamCity 尝试获取那些挂起的更改时,我收到以下错误:
'git fetch' command failed.
exception: Timeout exception
切换到详细日志记录后,我发现它在 90 秒后超时 - 我预计在正常情况下,获取这些更改只需几秒钟。
自从我开始尝试解决问题以来,我已将我的 VCS 根目录更改为“默认私钥”,并添加了包含配置、id_rsa 和 known_hosts 文件的所需 .ssh 文件夹。在我将必要的内容放入这些文件之前,我在日志中看到了指纹和密码消息,现在我的服务器再次返回超时异常,就像我在 VCS 根目录中指定 key 时一样。
如果我从命令行运行 Git,我可以在没有任何提示的情况下克隆存储库(当我按上述方式设置 .ssh 文件夹时)。这是来自不同的用户帐户,因为 TC 在默认 SYSTEM 帐户下作为服务运行,但我不认为这是原因,因为正如我所说,我可以看到 TC 已经为此选择了对 .ssh 文件夹的更改帐户。
有什么问题吗?
最佳答案
您已经为 TeamCity 服务器设置了 key ,但是您是否也为代理设置了 key ?这可以解释为什么在配置中测试连接有效,但在代理执行时却不起作用。
调试问题的快速方法:
在 VCS 设置中,将 VCS Checkout mode
更改为 Automatically on server
并查看它是否有效?
更新:
您可以登录到 TeamCity 服务器并以 teamcity
用户身份从您的 git 存储库运行 manula git clone
吗?通过这种方式,您可以看到它正在运行,还可以保存为受信任的主机等。
关于git - TeamCity 从 SSH Git 存储库获取更改时如何解决超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985085/