詹金斯不再工作:找不到SSH可执行文件 [英] Jenkins not working anymore: SSH executable not found

查看:1004
本文介绍了詹金斯不再工作:找不到SSH可执行文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道从什么时候开始,但有一天我的詹金斯没有建立我的项目了。





问题



我已经通过连接到我的git存储库来配置Jenkins。

  Repository URL:https://github.com/myuser/MyRepo.git 

当我尝试构建I得到这个:

  javax.servlet.ServletException:java.lang.RuntimeException:找不到ssh可执行文件。 git插件只支持官方的git客户端http://git-scm.com/download/win 
在org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
在org.kohsuke .stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.MetaClass $ 5.doDispatch(MetaClass.java:233)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch( NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
在org.kohsuke.stapler.MetaClass $ 5.doDispatch(MetaClass.java:233)
在org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
在org.kohsuke。 stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(订书机。 java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServ (org.eclipse.jetty.servlet.ServletHoller.handle(ServletHolder.java:812)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler。 Java的:在hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:135)
在hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
。在组织1669)
。 eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1652)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
at org.eclipse.jetty。 servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1652)
at hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java :51)
at hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter.doFilter(Exception TranslationFilter.java:117)
在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
在org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
。在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
在org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
在hudson.security .ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
在org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java :87)
。在jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
。在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
。在org.acegisecurity .context.HttpSessionContextIntegrationFilter.doFilter(HttpSessio nContextIntegrationFilter.java:249)
在hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)
。在hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
处org.eclipse.jetty.servlet.ServletHandler $ CachedChain hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
。的doFilter(ServletHandler.java:1652)
在org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter( ServletHandler.java:1652)
在hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1652)
在org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
。在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1652)
在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org。 eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org。 eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.ja va:97)
在org.eclipse.jetty.server.Server.handle(Server.java:499)
在org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection $ 2.run(AbstractConnection.java:544)
在winstone.BoundedExecutorService $ 1.run(BoundedExecutorService.java:77)$ b $在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)
在java.lang.Thread.run(未知源)
引起:java.lang.RuntimeException:未找到ssh可执行文件。 git插件只支持org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getSSHExecutable(CliGitAPIImpl.java:1569)
在org官方git客户端http://git-scm.com/download/win
.jenkinsci.plugins.gitclient.CliGitAPIImpl.createWindowsGitSSH(CliGitAPIImpl.java:1575)
在org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1305)
在org.jenkinsci.plugins .gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1282)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1273)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl .getHeadRev(CliGitAPIImpl.java:2404)
在hudson.plugins.git.UserRemoteConfig $ DescriptorImpl.doCheckUrl(UserRemoteConfig.java:156)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodA在java.lang.reflect.Method.invoke(未知源)
在org.kohsuke.stapler.Function $ InstanceFunction.invoke(Function.java:324)

$ b $ $ b at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
at org.kohsuke.stapler .MetaClass $ 1.doDispatch处org.kohsuke.stapler.Stapler.tryInvoke org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
(MetaClass.java:124)
(订书机。 java:746)

这也可以在配置页面看到。



我搜索了互联网,这是非常令人沮丧的,这种常见问题怎么可能没有稳定的repro,并且有这么糟糕的文档呢?顺便说一下,发生了什么事情?

确保你的系统路径包括:

 < path / to / git> \usr\bin 

您可以在其中找到所有Linux可执行文件(包括ssh.exe)。



您可以安装可移植版本的Git ,您可以随时随地使用系统。






2017年4月更新:我与Jenkins 1.614和Git客户端1.19存在同样的问题。

错误是通过从 C:\myGit\usr\bin (使用%PATH%中的C:\ MyGit\usr\bin)复制ssh.exe到

  c:\程序文件\Git\bin 

即使:




  • 中没有 Git C:\程序文件(我在 C:\myGit 中安装/解压缩),即复制后 C:\Program Files \Bin 只包含 bin \ssh.exe :就是这样。

  • C:\ Program Files \Bin PATH 中不是 。 b $ b


但是Git Client(至少在旧版本中)是硬连线搜索该路径

一旦我切换到Jenkins 2.54+,我将测试更新的Git客户端插件。


I don't know since when, but one day my Jenkins is not building fine my projects anymore.

The problem

I have configured Jenkins in order to build by connecting to my git repository.

Repository URL: https://github.com/myuser/MyRepo.git

When I try to build I get this:

javax.servlet.ServletException: java.lang.RuntimeException: ssh executable not found. The git plugin only supports official git client http://git-scm.com/download/win
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: ssh executable not found. The git plugin only supports official git client http://git-scm.com/download/win
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getSSHExecutable(CliGitAPIImpl.java:1569)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.createWindowsGitSSH(CliGitAPIImpl.java:1575)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1305)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1282)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1273)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getHeadRev(CliGitAPIImpl.java:2404)
    at hudson.plugins.git.UserRemoteConfig$DescriptorImpl.doCheckUrl(UserRemoteConfig.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

This can be seen also in the configuration page.

I searched the Internet and this is very frustrating, how is it possible that such a common problem has no stable repro and there is so bad documentation on this? Btw, what is going on?

解决方案

Make sure your system path includes:

 <path/to/git>\usr\bin

You will find all the Linux executable (including ssh.exe) there.

You can install a portable version of Git anywhere you want on your system.


Update April 2017: I had the same issue with Jenkins 1.614 and Git client 1.19

The only way I get past that error was by copying ssh.exe from C:\myGit\usr\bin (with C:\MyGit\usr\bin in %PATH%) to

c:\Program Files\Git\bin

Even though:

  • There is not Git at all in C:\Program Files (I installed/unzipped it in C:\myGit), meaning after the copy, C:\Program Files\Bin only include bin\ssh.exe: that's it.
  • C:\Program Files\Bin is not in the PATH.

But the Git Client (at least in that old version) is hard-wired to search in that path.

Once I will switch to Jenkins 2.54+, I will test a more recent Git Client plugin.

这篇关于詹金斯不再工作:找不到SSH可执行文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆