[英]Jenkins hangs when trying to fetch from Stash
我正在尝试配置Jenkins与Atlassian Stash合作。 我已经(显然)得到了Git插件来成功ping Stash,因为Git插件页面不再有任何错误消息。 我正在使用带有SSH的Git,并且我已使用正确的SSH密钥配置了我的Stash帐户。 我还要提一下,我的办公室位于防火墙后面,因此是Stash的代理服务器。 以下是Jenkins Git配置的屏幕截图:
在默认的10分钟超时后,控制台输出指示失败。 以下是控制台输出的内容:
> C:\Program Files (x86)\Git\bin\git.exe fetch --tags --progress ssh://git@stash.someproxy.com:7999/project/myrepo.git
+refs/heads/*:refs/remotes/origin/*
ERROR: Timeout after 10 minutes
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command "C:\Program Files (x86)\Git\bin\git.exe fetch --tags --progress ssh://git@stash.someproxy.com:7999/project/myrepo.git +refs/heads/*:refs/remotes/origin/*" returned status code -1:
stdout:
stderr:
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn
...
当我直接从Windows bash运行以下Git命令时,尽管没有输出,它会很快完成:
$ time git fetch --tags --progress
ssh://git@stash.someproxy.com:7999/pcb_imst/
wigbotsimulator.git +refs/heads/*:refs/remotes/origin/*
real 0m5.530s
user 0m0.093s
sys 0m0.062s
此外,当我从Jenkins删除凭据并尝试构建时,我几乎立即收到身份验证错误( Permission denied (publickey)
)。 所以肯定看起来Jenkins可以打 Stash,虽然它似乎无法完成一次获取。
我不知道如何解决这个问题。 奇怪的是,Git在本地工作但在Jenkins使用它时不起作用。
在与@VonC广泛交谈并且没有出现明显的错误之后,我尝试让Jenkins通过HTTPS连接。 最初我放弃了HTTPS,因为它也没有用。 令我惊讶的是,HTTPS构建工作没有错误。
我准备放弃SSH,作为最后的手段,我决定使用以下私钥选项:
换句话说,我将我的私钥( ~/id_rsa
)直接剪切并粘贴到Jenkins中。 令我惊讶的是,这很有用! 我正在使用VM,我的用户文件夹位于F:
驱动器上,显然Jenkins无法读取。
因此,我的问题的根本原因实际上是SSH私钥文件的问题。 但确切的错误是Jenkins无法读取这个私钥。 吸取的教训是确保Jenkins能够读取它需要运行的每个文件。 仅仅因为您的Git设置在本地工作并不意味着它也适用于Jenkins。
如上所述,使用Jenkins SSH凭据插件是正确的解决方案。
直接复制私有SSH密钥比依赖Jenkins master更容易知道在哪里找到~/.ssh/id_rsa
(在Windows上, %USERPROFILE%\\.ssh\\id_rda
),特别是考虑到Jenkins经常与系统帐户一起使用,而不是当地的。
Stash有公钥。 如果Jenkins拥有私钥,它将能够完成身份验证。
HTTPS也会起作用,考虑到凭据管理器是存储管理器,它已经缓存了用户名/密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.