21

错误:

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:jenkinsrepo 文件夹上
  • 试图从这个本地 repo 文件夹克隆到另一个文件夹:这行得通!

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

我的问题是:

  1. 为什么git ls-remote -h ...应该调用命令git clone ...
  2. 如何配置 jenkins git 插件以从本地 repo 获取代码

我的环境:

RHEL 5.9

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

Git 插件

4

6 回答 6

23

Jenkins作为服务安装时,默认情况下Jenkins不会创建用户目录,如:/home/jenkins. Jenkins 默认主目录设置为/var/lib/jenkins. 如您所料,从我的解决方法来看,jenkins从其他用户目录访问本地资源时遇到了麻烦。

我将克隆的 repo 移动到 Jenkins 默认主目录下,即/var/lib/jenkinsRepository URLJenkins 项目配置下,如下所示:file:///${JENKINS_HOME}/repo/<myprojectname>

更新: 以上工作正常......但我从这个博客找到了一个更好的方法

此处概述了这些步骤:

查找/etc/init.d/jenkins脚本。定义了一些$JENKINS变量。这应该会引导你到sysconfigfor jenkins ie /etc/sysconfig/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

重新启动詹金斯,该错误应该消失

sudo /sbin/service jenkins start

这个错误现在应该消失了!

于 2013-08-09T14:45:54.637 回答
8

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

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

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

于 2014-04-22T20:46:22.490 回答
6

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

(Windows 7的)

  1. 打开任务管理器(Ctrl + Shift + Escape)
    1. (仅限 Windows 10)点击More Details弹出窗口左下角的
  2. 转到服务选项卡
  3. 点击Services...按钮
  4. 在服务列表中找到“Jenkins”
  5. 右键单击“Jenkins”并单击属性
  6. 单击Jenkins 属性窗口中的登录选项卡
  7. 选择此帐户:登录为下:
  8. 输入你的用户名与密码
  9. 点击OK
  10. 重启 Jenkins 服务
  11. 那么鲍勃就是你的叔叔。
于 2016-03-16T15:49:49.640 回答
3
  1. Jenkinsgit clone仅在为项目配置工作区时第一次使用命令。更多实例使用该git ls-remote命令。

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

此外,请参阅提供的链接中配置 SSH 的分步过程。这可能无法为您提供准确的解决方案,但可以为您指明解决方案。

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

于 2013-07-01T02:02:40.143 回答
0

我发现其他解决方案对我来说有点“hacky”。我所做的是将 Jenkins 主文件夹从 /Users/Shared/ 移动到 /Users/[myacccount]/。这样,我的 Jenkins 将可以访问我的存储库和我的 Android SDK(因为那是我使用 Jenkins 的地方)。然后更改 JENKINS_HOME 环境变量。我通过在我的 .bash_profile 中输入 JENKINS_HOME 来做到这一点(但还有其他方法可以做到这一点)。

注意:我使用 OSX

于 2016-09-28T01:40:55.447 回答
0

而不是file:///你也可以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
于 2020-02-16T13:13:21.837 回答