错误:
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目录的文件夹)chowned
到jenkins:jenkins
当我在cmd上运行上面的命令:/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD
时,我得到了分支。
我的问题是:
git ls-remote -h ...
命令应该是git clone ...
?我的环境:
RHEL 5.9
Jenkins 1.519作为服务安装(没有Web容器)
答案 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)
答案 3 :(得分:3)
Jenkins仅在为项目配置工作空间时首次使用git clone
命令。更多实例使用git ls-remote
命令。
配置Jenkins时遇到了同样的问题。通过使用SSH密钥解决了这个问题。这看起来也像配置问题。检查是否为Jenkins帐户设置了SSH密钥。
另外,请参阅提供的链接中的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设置:
ssh-keygen
中还没有密钥对,请使用~/.ssh
生成密钥对。~/.ssh/id_rsa
)粘贴到Jenkins(项目设置,git repo,凭据)中~/.ssh/authorized_keys