基本上,这是我得到的日志:
由用户dontcare4free启动
$ hg clone --rev default ssh://hg@bitbucket.org/dontcare4free/my-repository / var / lib / jenkins / workspace / Custom-MC-Server
* 无法导入扩展名hgext.imerge:没有名为imerge的模块 remote:主机密钥验证失败 中止:远程hg没有合适的响应!
错误:无法克隆ssh://hg@bitbucket.org/dontcare4free/my-repository
[Custom-MC-Server] $ hg log --rev。 --template {node}
java.io.IOException:无法运行程序“hg”(在目录“/ var / lib / jenkins / workspace / My-Repository”中):java.io.IOException:error = 2,没有这样的文件或目录
在java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
在hudson.Proc $ LocalProc。(Proc.java:244)
在hudson.Proc $ LocalProc。(Proc.java:216)
在hudson.Launcher $ LocalLauncher.launch(Launcher.java:698)
在hudson.Launcher $ ProcStarter.start(Launcher.java:329)
在hudson.Launcher $ ProcStarter.join(Launcher.java:336)
在hudson.plugins.mercurial.MercurialSCM.joinWithPossibleTimeout(MercurialSCM.java:299)
在hudson.plugins.mercurial.HgExe.popen(HgExe.java:191)
在hudson.plugins.mercurial.HgExe.tip(HgExe.java:171)
at> hudson.plugins.mercurial.MercurialSCM.calcRevisionsFromBuild(MercurialSCM.java:255)
在hudson.scm.SCM._calcRevisionsFromBuild(SCM.java:304)
在hudson.model.AbstractProject.calcPollingBaseline(AbstractProject.java:1205)
在hudson.model.AbstractProject.checkout(AbstractProject.java:1194)
在hudson.model.AbstractBuild $ AbstractRunner.checkout(AbstractBuild.java:555)
在hudson.model.AbstractBuild $ AbstractRunner.run(AbstractBuild.java:443)
在hudson.model.Run.run(Run.java:1376)
在hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
在hudson.model.ResourceController.execute(ResourceController.java:88)
在hudson.model.Executor.run(Executor.java:175)
引起:java.io.IOException:java.io.IOException:error = 2,没有这样的文件或目录
在java.lang.UNIXProcess。(UNIXProcess.java:164)
在java.lang.ProcessImpl.start(ProcessImpl.java:81)
在java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
... 18更多
Jabber通知程序插件:发送通知:-snip-
Jabber通知插件:通知嫌疑人
Jabber通知程序插件:通知罪犯
通知上游项目完成工作
完成:失败
据我所知,这意味着找不到hg
可执行文件。但是,当我尝试执行hg
作为构建步骤(shell执行)并禁用Mercurial集成时,我没有遇到这样的错误。
我尝试过,无论是否更改安装目录和可执行文件,我甚至尝试过编译(好吧,无论如何)来自源代码的Mercurial,都无济于事。
编辑:傻我。我完全误读了日志。问题与它根本没有找到hg可执行文件无关,但实际上是因为我忘了正确设置我的密钥。答案 0 :(得分:8)
检查http://localhost:8080/systemInfo环境变量> PATH显示“/ usr / bin:/ bin:/ usr / sbin:/ sbin”。我无法确定为什么詹金斯看到这一切。以守护程序配置的用户身份登录时,我会获得更大的路径集。
我能够通过创建一个符号链接来帮助Mercurial Plug-in找到“hg”。
sudo ln -s /usr/local/bin/hg /usr/bin/hg
我尝试将以下内容添加到/ etc / profile(我重新启动以防万一)
PATH=$PATH:/usr/local/bin
export PATH
我通过输入
验证了这修改了我的路径echo $PATH
终端中的但是,这条道路没有出现在詹金斯
中我能够使用sym链接解决方案,但我真的很想了解Jenkins获取Path的位置。
答案 1 :(得分:4)
Nullable是对的,问题不在于找不到hg可执行文件,而是jenkins用户没有公钥。
解决方案如下:
ssh-keygen
生成一个并且不指定密码短语cat .ssh/id_rsa.pub
,复制输出。希望对这个问题的任何人都有帮助,祝你好运。
答案 2 :(得分:0)
我首先想到的是你应该检查jenkins设置中hg可执行文件的路径,如果有这样的选项,它可能不会指向正确的路径。
如果这没有用,请确保hg在PATH上。
根据此页面http://www.pixelastic.com/blog/162:failed-to-import-extension-hgext-imerge-warning-on-dreamhost
,可能需要进行一些设置也许这可以解决您的问题?