使用https://wiki.jenkins.io/display/JENKINS/Git+Parameter+Plugin,当Jenkins中的用户导航到构建的“带有参数的构建”页面时,分支列表将替换为
命令“ git ls-remote -h git@bitbucket.org:myorg / my_repo.git”返回状态码128: 标准输出: stderr:/tmp/ssh4348750905358163987.sh:第6行:ssh:找不到命令 致命的:无法从远程存储库读取。
当我SSH到Jenkins主服务器时(这是我在猜测git ls-remote命令从何处运行),我可以正常运行sudo -u jenkins -- git ls-remote -h git@bitbucket.org:<myorg>/<my_repo>.git
并得到分支列表。那么当git尝试调用ssh时,为什么詹金斯会f倒?
查看日志时,看到以下堆栈异常:
在org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2002) 在 org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1721) 在 org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1625) 在 org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1616) 在 org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getRemoteReferences(CliGitAPIImpl.java:2837) 在 net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition.getBranch(GitParameterDefinition.java:381) 在 net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition.generateContents(GitParameterDefinition.java:310) 在 net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition $ DescriptorImpl.doFillValueItems(GitParameterDefinition.java:622) 在 java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) 在 org.kohsuke.stapler.Function $ MethodFunction.invoke(Function.java:343) 在org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)在 org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117) 在org.kohsuke.stapler.MetaClass $ 1.doDispatch(MetaClass.java:129)处 org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 在org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)处 org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)在 org.kohsuke.stapler.MetaClass $ 5.doDispatch(MetaClass.java:248)在 org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 在org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)处 org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)在 org.kohsuke.stapler.MetaClass $ 5.doDispatch(MetaClass.java:248)在 org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 在org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)处 org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)在 org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)在 org.kohsuke.stapler.Stapler.service(Stapler.java:238)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790)在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:860) 在 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1650) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:154) 在 org.jenkinsci.plugins.ssegateway.Endpoint $ SSEListenChannelFilter.doFilter(Endpoint.java:225) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:151) 在 io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:151) 在 io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:151) 在 jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:151) 在 net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:237) 在 net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:214) 在 net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:88) 在 org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:114) 在 hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:151) 在 hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) 在 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99)处 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在 hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:84) 在 hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 在 hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87) 在 jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.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(HttpSessionContextIntegrationFilter.java:249) 在 hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 在 hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87) 在 hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90) 在hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)处 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在 org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 在 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在 hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) 在 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在 org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 在 org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1637) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) 在org.eclipse.jetty.server.Server.handle(Server.java:530)处 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256) 在 org.eclipse.jetty.io.AbstractConnection $ ReadCallback.succeeded(AbstractConnection.java:279) 在org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) 在 org.eclipse.jetty.io.ChannelEndPoint $ 2.run(ChannelEndPoint.java:124) 在 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247) 在 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140) 在 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) 在 org.eclipse.jetty.util.thread.ReservedThreadExecutor $ ReservedThread.run(ReservedThreadExecutor.java:382) 在 winstone.BoundedExecutorService $ 1.run(BoundedExecutorService.java:77) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
编辑:如果我删除了branch参数,并用一个简单的用于分支的字符串参数替换它,它会成功获取,因此它似乎是git参数插件的一个错误-也许是在Windows Jenkins从站使用cygwin / ssh时。>