Jenkins错误:克隆远程仓库'origin'时出错,从节点

25
我需要帮助,这个问题困扰我已经一周了,完全搞不清楚发生了什么。我无法从一个从节点(Jenkins)克隆git repo。我添加了ssh密钥、主机和从节点(我已经尝试过生成单一密钥以及为每个虚拟机和主机各生成一个密钥)。
在Jenkins上: url: git@github.com: 凭据: 这里我用用户名/密码、带有SSH文件的用户名、直接使用SSH密钥的用户名以及 -none- 进行了尝试。
看起来并不像是身份验证问题,因为我可以从控制台手动克隆repo(包括从从节点和主机)。同时我也可以连接到
ssh -T git@github.com
所以SSH密钥是好的,但是当我构建时,这个东西会出现在控制台:
建立远程工作目录IE10Win7 C:\Users\IEUser\Desktop\
首先删除工作空间。 克隆远程Git仓库 克隆存储库 git@github.com:.git git init C:\Users\IEUser\Desktop\ # timeout=10 错误:克隆远程repo 'origin'时出错 错误:克隆远程repo 'origin'时出错 执行后建立任务...
有人有思路吗?谢谢!

非常抱歉,我无法提供任何帮助,但我也期待着任何关于此问题的意见。我在Windows 7(64位)主机上遇到了相同的问题,尝试连接到私有仓库。一个作业根本无法连接(出现上述错误),其他作业一直没有问题,有些会随机出现错误。 - Sir Jane
我知道这不是一个典型的答案,但我犯了一个错误,我的构建将使用不正确的凭据从属。无论如何,我的建议是如果其他解决方案不足以解决问题,请尝试在另一个已知的良好从属上进行测试。 - kayleeFrye_onDeck
8个回答

22

我通过设置从节点工具路径,选择Git并将其值设置为解决了这个问题。

C:\Program Files (x86)\Git\bin\git.exe

位置:配置节点 - 工具位置


这种方法更好,因为您不需要更改全局Jenkins配置。 - jackal

11

我最近更新了几个Jenkins插件,在更新后出现了这个问题。 回滚Git插件没有帮助,但我做了其他一些事情来让它正常工作。 我在此列出了所有三个方法,但是可能是(2)解决了问题。 显然,Git可执行文件已重置为默认设置。 因此,在特定项目中配置Git可执行文件可能是所需的全部内容。但是其他条目也可能有用。

(1)在Jenkins Linux安装上,默认的Git通常指向/usr/lib...,您需要指定一个指向Windows版本的独立GitForWindows:

Manage Jenkins
Configure System
Under Git - Git Installations
    Add Git -> Git
    Give it a name to be referenced in projects
      (mine is WindowsGit)
    Set Path to Git Executable
      (mine is "C:\Program Files (x86)\Git\bin\git.exe")
      (for recent git the path is "C:\Program Files\Git\bin\git.exe")

(2) 针对特定项目配置 git:

Select the project
Select Configure
Under Source Code Management - Git
    Select Git Executable as configured in 1)
    Set credentials or add new (ssh keys, etc)

(3) 将 Jenkins slave 服务更新为以特定用户的身份运行:

Go to Windows Services on the slave -- StartMenu, type "services"
Select the Jenkins Slave service in the list on the right
Right-click and select "Properties" of the Jenkins Slave service
Select the "Log On" tab
Update the username and password used in manual tests
    Domain login can be specificied with <DOMAIN>\<USERNAME>
    Local logins just use <USERNAME>
OK to save and exit
Right-click again and select "Restart" to make the changes active.

3
我已经按照三个步骤操作,但只有在将管理员权限设置到Jenkins服务后,它才开始正常工作。 - andyroschy

4
我在我的情况下找到了一个不错的解决方法。git clone 命令总是继承其进程所有者,这可能会产生差异,即使 Jenkins(SYSTEM)和 cmd(USER)的两个所有者在您的系统上似乎具有相同的权限。所有其他配置都相同(密钥、已知主机、Git客户端版本)。
所以就我所看到的,从cmd调用 git clone 将成功,因为它将远程作为 USER 调用,而从 Jenkins 调用 git clone 可能被拒绝,因为它将远程作为 SYSTEM 调用。在服务中,您通常会通过 GUI 启动 Jenkins,在那里您可以配置服务以作为不同的用户运行(右键单击服务 -> 属性 -> 登录)。我必须像 USER@DOMAIN 这样放置它,例如 Jenkins@company.local 或类似的内容。我不确定 cmd 参数会是什么样子,但我希望有一个。
此外,我不太清楚这种解决方法最终会有什么差异,因为在我的 Jenkins 上,SYSTEM 和 USER 都配置为在整个系统上具有相同的权限,并且当然都被识别为远程的 "Jenkins"。还是对更深入的洞察表示欢迎。

当我设置另一个Windows从机时,同样的事情再次发生了。这是在我将从机安装为服务后开始的...这会更改用户为SYSTEM。 但实际上我忘记了几个月前已经在这里发布了这个答案,所以我又重新搜索和思考了一遍 x) - Sir Jane

0

我曾经遇到类似的问题,发现需要将git添加到我的PATH环境变量中,以便在基于Windows的从机上使用。我认为@dhj的第二个建议在这种情况下也可能有效。

我在Jenkins Jira上找到了这个解决方法。


0

我尝试了上述大部分方法:

指定git位置。 设置服务用户。 以管理员身份运行。

但都没有奏效。最终决定卸载git64并安装git32...将git路径更改为新位置(在x86 Program Files中)。然后一切正常了。


0
在我的情况下,我在一些构建机器上更新Git(通过Chocolatey,使用“git.install”包)从1.9.4到2.5.0后开始出现这个确切的错误。旧的1.9.4安装是一个32位的包,但新的安装是一个64位的包,因此默认的安装位置从C:\Program Files (x86)\Git切换到了C:\Program Files\Git。我已经在Jenkins主服务器上配置了64位路径(因为它有更新的Git版本),但一些从服务器仍然安装了旧的32位版本,因此从服务器正在尝试使用不正确的路径。我可以为单个从服务器覆盖Git路径,但对我来说更清洁的解决方案是将所有从服务器升级到更新的64位版本。

0

我最近遇到了这个问题。

我们在尝试将Winium和Selenium连接到我们的Jenkins实例时,将一些项目添加到了我们的PATH EV中。

我们删除了这些项目,但是Jenkins似乎仍然保留着这些值。经过一番疑难解答:重新启动Jenkins;重新启动Jenkins服务器;在节点级别设置EVs等,我们重新启动了Windows从属机上的Jenkins JNLP服务

然后他们就幸福地生活在一起了。


0

我也遇到了同样的错误,并通过在“管理Jenkins ->全局工具配置”中添加git路径来修复它。

在我的环境中,Windows Jenkins主机在Ubuntu从机上运行作业,主机使用默认的git('C:\ Program Files \ Git \ git.exe')路径,从机使用git('/usr/bin/git')路径,因此,我将从机的git路径配置到主机配置'/usr/bin/git'中,这样就可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接