我的Hudson(连续集成系统)的git插件在Tomcat Windows服务上运行。已安装msysgit,并且msysgit bin目录位于路径中。已安装PuTTY / Pageant / plink,并将msysgit配置为使用它们。
当我运行尝试克隆git存储库的作业时,出现以下错误:
$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace Trying next repository ERROR: Could not clone from a repository FATAL: Could not clone hudson.plugins.git.GitException: Could not clone
这使我相信问题在于,拥有Tomcat / Hudson Windows服务(本地系统)的用户未设置SSH密钥以克隆git存储库。
我的问题是,如何进行设置,以便git插件/msysgit在尝试克隆时知道使用特定的SSH密钥?我认为Pageant无法正常工作,因为Tomcat服务是以“本地系统”用户身份运行的,但是我可能错了。我尝试将Pageant设置为服务(使用runassvc.exe),传递适当的密钥,并使其作为“本地系统”运行。Tomcat/Hudson服务似乎无法从选美服务中看到密钥。还有其他设置密钥的技术吗?
谢谢。
编辑:http ://n4.nabble.com/Hudson-with-git-and-ssh- td375633.html上的讨论表明,其他人也有类似的问题。建议使用ssh-agent,该工具确实随msysgit一起提供,但我不确定如何将其与Hudson服务结合使用。不过,如果有人可以填补空白,这是一个很好的线索。感谢Peter对链接的评论。
另外,在http://n4.nabble.com/questions-about-git-and-github-plug-ins- td383420.html上的讨论也从同一个问题开始。我正在尝试恢复该线程。
我们使用Hudson,并使用ssh键从git签出源代码。但是,实际上我们在Ubuntu服务器上有Hudson。Hudson的SSH密钥对位于~hudson/id_rsa和~hudson/id_rsa.pub
~hudson/id_rsa
~hudson/id_rsa.pub
因此,针对Windows安装调整我们的建议:
我们团队中基于Windows的开发人员使用MSysGit,并通过ssh上的git定期检出代码-但不使用Putty / Pageant。由于登录存在一些协议错误,我们发现Pageant很痛苦。相反,他们将git配置为使用openSSH(这是安装期间的选项之一)。然后,他们的公钥/私钥对生活在里面~username/id_rsa,~username/id_rsa.pub并且一切正常。
~username/id_rsa
~username/id_rsa.pub
因此,我建议将您的git配置更改为使用OpenSSH而不是Pageant。如果没有其他问题,您将不必担心开始选美。
您可以使用PuttyGen生成密钥。但是,如果您使用的是OpenSSH而不是选美,则需要导出合适的私钥(从PuttyGen顶部的菜单之一)并将其保存为id_rsa,然后从PuttyGen的GUI复制并粘贴公钥(它会显示,但不会为OpenSSH保存合适的版本,并将其另存为id_rsa.pub。这是因为Putty与OpenSSH使用的密钥格式略有不同。
id_rsa
id_rsa.pub
当然,也可以选择将hudson服务器始终托管在ubuntu服务器上(真实服务器或通过VirtualBox)。