当Jenkins Mercurial插件调用时,找不到"hg"

Teo*_*zon 3 mercurial hudson jenkins

基本上,这是我得到的日志:

由用户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)
at 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)
在> 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)
at hudson.model.Abstra ctBuild $ 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)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:175)
引起:java.io.IOException:java. io.IOException:误差= 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可执行文件无关,但实际上是因为我忘了正确设置我的密钥.

lev*_*ous 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 
Run Code Online (Sandbox Code Playgroud)

我尝试将以下内容添加到/ etc/profile(我重新启动以防万一)

PATH=$PATH:/usr/local/bin
export PATH
Run Code Online (Sandbox Code Playgroud)

我通过输入验证了这改变了我的路径

echo $PATH
Run Code Online (Sandbox Code Playgroud)

在终端.然而,詹姆斯没有出现这条道路

我能够使用sym link解决方案,但我真的很想了解Jenkins在哪里获得它的路径.