Jenkins的git插件无法从本地计算机克隆回购。错误代码128

时间:2013-06-25 21:32:08

标签: git jenkins jenkins-plugins

错误:

Failed to connect to repository : Command "/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD" returned status code 128:
stdout:
stderr: fatal: 'home/myuser/path/to/project' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我尝试了以下内容:

  • chmod 777到repo文件夹(包含.git目录的文件夹)
  • 回购文件夹上的
  • chownedjenkins:jenkins
  • 尝试从此本地repo文件夹克隆到另一个文件夹中:这有效!

当我在cmd上运行上面的命令:/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD时,我得到了分支。

我的问题是:

  1. 为什么git ls-remote -h ...命令应该是git clone ...
  2. 如何配置jenkins git插件以从本地存储库获取代码
  3. 我的环境:

    RHEL 5.9

    Jenkins 1.519作为服务安装(没有Web容器)

    Git plugin

6 个答案:

答案 0 :(得分:16)

安装Jenkins作为服务时,默认情况下,Jenkins不会创建用户目录,如:/home/jenkins。 Jenkins默认主目录设置为/var/lib/jenkins。正如您所期望的那样,jenkins无法从其他用户目录访问本地资源。

我将克隆的repo移到了Jenkins默认主目录下,即/var/lib/jenkins下,因此Jenkins Project配置中的Repository URL看起来像是:file:///${JENKINS_HOME}/repo/<myprojectname>

<强>更新 以上工作正常......但我从this blog

找到了更好的方法

这里列出了步骤:

查找/etc/init.d/jenkins脚本。定义了一些$JENKINS个变量 。这应该会引导您到jenkins的sysconfig,即/etc/sysconfig/jenkins。 停止你的jenkins实例:

sudo /sbin/service jenkins stop

进行备份

cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak

在此文件中,更改以下属性:

$JENKINS_USER="<your desired user>"

更改所有相关Jenkins目录的所有权:

chown -R <your desired user>:<your user group> /var/lib/jenkins

chown -R <your desired user>:<your user group> /var/cache/jenkins

chown -R <your desired user>:<your user group> /var/log/jenkins

重新启动jenkins,该错误应该消失

sudo /sbin/service jenkins start

此错误现在应该消失!

答案 1 :(得分:8)

自问这个问题已经有一段时间了,但我今天遇到了这个问题而且资源非常少。最有可能的是,因为人们倾向于远程连接到git存储库。

我使用strace检查了jenkins究竟在做什么,是的,这是权限问题。

但是我以一种比答案#2更简单的方式解决了这个问题 - 将jenkins添加到git服务器组 - 在我的例子中,git1: root# gpasswd -a jenkins git1 root# service jenkins restart

答案 2 :(得分:6)

我在Windows上运行Jenkins并遇到同样的问题。我能够通过让我的笔记本电脑上的用户登录Jenkins服务来解决这个问题。

(Windows 7)

  1. 打开任务管理器(Ctrl + Shift + Escape)
    1. (仅限Windows 10)点击弹出窗口左下角的更多详情
  2. 转到服务标签
  3. 点击服务... 按钮
  4. 在服务列表中找到“Jenkins”
  5. 右键单击“Jenkins”,然后单击属性
  6. 点击 Jenkins属性窗口中的登录标签
  7. 选择此帐户: 登录为:
  8. 输入您的用户名和密码
  9. 点击确定
  10. 重新启动Jenkins服务
  11. 然后鲍勃是你的叔叔。

答案 3 :(得分:3)

  1. Jenkins仅在为项目配置工作空间时首次使用git clone命令。更多实例使用git ls-remote命令。

  2. 配置Jenkins时遇到了同样的问题。通过使用SSH密钥解决了这个问题。这看起来也像配置问题。检查是否为Jenkins帐户设置了SSH密钥。

  3. 另外,请参阅提供的链接中的SSH配置步骤。这可能无法为您提供准确的解决方案,但可以为您指出解决方案。

    http://oodlestechnologies.com/blogs/How-to-setup-Jenkins-With-Grails-on-Ubuntu

答案 4 :(得分:0)

我发现其他解决方案有点&#34; hacky&#34;为了我。我所做的是将Jenkins Home文件夹从/ Users / Shared /移动到/ Users / [myacccount] /。通过这种方式,我的Jenkins可以访问我的repos和我的Android SDK(因为那是我使用Jenkins的地方)。然后更改JENKINS_HOME环境变量。我通过在我的.bash_profile中输入JENKINS_HOME来做到这一点(但还有其他方法可以做到这一点)。

注意:我使用OSX

答案 5 :(得分:0)

除了file:///之外,您还可以像this answer一样使用ssh://

ssh://YOUR_USER@localhost/PATH_TO_YOUR_PROJECT

请注意,您需要执行标准的ssh设置:

  1. 如果ssh-keygen中还没有密钥对,请使用~/.ssh生成密钥对。
  2. 将私钥(默认为~/.ssh/id_rsa)粘贴到Jenkins(项目设置,git repo,凭据)中
  3. 将公钥粘贴到~/.ssh/authorized_keys