【问题标题】:"hg" can not be found when invoked by the Jenkins Mercurial pluginJenkins Mercurial 插件调用时找不到“hg”
【发布时间】:2011-07-22 17:56:54
【问题描述】:

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

由用户 dontcare4free 发起

$ hg clone --rev default ssh://hg@bitbucket.org/dontcare4free/my-repository /var/lib/jenkins/workspace/Custom-MC-Server

* 未能导入扩展 hgext.imerge:没有名为 imerge 的模块
远程:主机密钥验证失败。
中止:远程 hg 没有合适的响应!
错误:无法克隆 ssh://hg@bitbucket.org/dontcare4free/my-repository
[自定义-MC-服务器] $ hg log --rev 。 --template {节点}
java.io.IOException:无法运行程序“hg”(在目录“/var/lib/jenkins/workspace/My-Repository”中):java.io.IOException:错误=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)
在 >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, No such file or directory
在 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 可执行文件。但是,当我尝试在禁用 Mercurial 集成的情况下将 hg 作为构建步骤(shell 执行)执行时,我没有收到此类错误。

我尝试过更改安装目录和可执行文件,甚至尝试过从源代码手动编译(好吧,不管有什么)Mercurial,但都无济于事。

编辑:愚蠢的我。我完全误读了日志。这个问题与根本找不到 hg 可执行文件无关,但实际上是因为我忘记正确设置我的密钥。

【问题讨论】:

    标签: mercurial hudson jenkins


    【解决方案1】:

    检查http://localhost:8080/systemInfo 环境变量> PATH 显示“/usr/bin:/bin:/usr/sbin:/sbin”。我无法确定为什么这就是詹金斯所看到的。以配置了守护进程的用户身份登录时,我会得到一组更大的路径。

    通过创建指向 hg 的符号链接,我能够帮助 Mercurial 插件找到“hg”。

    sudo ln -s /usr/local/bin/hg /usr/bin/hg 
    

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

    PATH=$PATH:/usr/local/bin
    export PATH
    

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

    echo $PATH
    

    在终端中。但是,这条路径并没有出现在 Jenkins 中

    我可以使用符号链接解决方案,但我真的很想了解 Jenkins 的路径。

    【讨论】:

    • 谢谢 - 这也解决了 Webstorm 未检测到 hg 的问题
    • 这对我有用。谢谢。但有兴趣知道它为什么起作用
    【解决方案2】:

    Nullable 是对的,问题不是找不到 hg 可执行文件,而是 jenkins 用户没有公钥。

    解决方法如下:

    1. 以jenkins用户登录
    2. 确保 jenkins 用户有一个公共 ssh 密钥,它应该在 .ssh/id_rsa.pub 中
    3. 如果没有,请使用 ssh-keygen 生成一个,并且不要指定密码
    4. 发出cat .ssh/id_rsa.pub,复制输出。
    5. 登录bitbucket或github,将刚才复制的公钥添加到账户中
    6. 再试一次!

    希望对您有所帮助,祝所有遇到此问题的人好运。

    【讨论】:

      【解决方案3】:

      我的第一个想法是你应该检查jenkins设置中hg可执行文件的路径,如果有这样的选项,它可能没有指向正确的路径。

      如果这没有帮助,请确保 hg 在 PATH 上。

      根据此页面http://www.pixelastic.com/blog/162:failed-to-import-extension-hgext-imerge-warning-on-dreamhost,看起来可能需要进行一些设置

      也许这可以解决您的问题?

      【讨论】:

      • 是的,它在路径中。是的,Jenkins 中的路径设置正确。
      • 我遇到了同样的问题。我通过创建从 /usr/bin/hg 到 /usr/local/bin/hg 的符号链接解决了这个问题。后者是 hg (mercurial) 的安装位置。一旦我这样做了,mercurial 插件就可以找到该程序。然而,这不是最优雅的解决方案。我将作为答案发布,但我希望得到一些关于正确解决方案可能是什么的建议。我尝试在 /etc/profile 中修改 $PATH 但 jenkins 仍然报告不同的路径
      猜你喜欢
      • 1970-01-01
      • 2012-01-10
      • 2022-10-21
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2016-09-23
      • 1970-01-01
      相关资源
      最近更新 更多