2016-09-17 2 views
1

Wenn ich die Option Use github hooks for build triggering in einem Jenkins Projekt aktivieren und versuchen, zu speichern, erhalte ich die folgende Ausnahme:Jenkins-Pull-Request-Plugin wirft eine ArrayIndexOutOfBoundsException Ausnahme

javax.servlet.ServletException: java.lang.ArrayIndexOutOfBoundsException: 1 
    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.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:80) 
    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.ArrayIndexOutOfBoundsException: 1 
    at org.kohsuke.github.GitHub.getRepository(GitHub.java:342) 
    at org.jenkinsci.plugins.ghprb.GhprbRepository.initGhRepository(GhprbRepository.java:112) 
    at org.jenkinsci.plugins.ghprb.GhprbRepository.getGitHubRepo(GhprbRepository.java:401) 
    at org.jenkinsci.plugins.ghprb.GhprbRepository.hookExist(GhprbRepository.java:269) 
    at org.jenkinsci.plugins.ghprb.GhprbRepository.createHook(GhprbRepository.java:292) 
    at org.jenkinsci.plugins.ghprb.GhprbTrigger.start(GhprbTrigger.java:260) 
    at org.jenkinsci.plugins.ghprb.GhprbTrigger.start(GhprbTrigger.java:66) 
    at hudson.model.AbstractProject.submit(AbstractProject.java:1884) 
    at hudson.model.Project.submit(Project.java:230) 
    at hudson.model.Job.doConfigSubmit(Job.java:1246) 
    at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:796) 
    at sun.reflect.GeneratedMethodAccessor303.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.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52) 
    at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26) 
    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) 
    ... 58 more 

Ich habe keine Ahnung, warum dies geschieht. Hat jemand eine Idee? Das Zusammenführen von Pull-Requests funktioniert gut. Wenn ich die Option deaktiviere, kann ich das Projekt ohne Ausnahmen speichern.

Vielen Dank!

+1

Klingt wie ein Fehler im Plugin ... Sie sollten dies wahrscheinlich auf ihrem Bug Tracker melden. – Tunaki

+0

@Tunaki, Wie kann ich diesen Fehler beheben? Verwende die jenkins verion 2.77. – Karthi

+0

@Oleg Sklyar, Wie kann ich diesen Fehler beheben? Ich benutze die jenkins verion 2.77 – Karthi

Antwort

1

Das Versagen Methode ist dies ein und der einzige Grund für ArrayIndexOutOfBoundsException kann falsch (ohne /) oder fehlende (leer) Token formatiert werden:

public GHRepository getRepository(String name) throws IOException { 
    String[] tokens = name.split("/"); 
    return retrieve().to("/repos/" + tokens[0] + '/' + tokens[1], GHRepository.class).wrap(this); 
} 

Hier ist der Link zur Quelle: https://github.com/kohsuke/github-api/blob/master/src/main/java/org/kohsuke/github/GitHub.java

die Plugin Dokumentation stellt das folgende Beispiel für Github (und es nicht für GitHub wie man es von der Stacktrace sehen):

remote { 
    github('test-owner/test-project') 
    refspec('+refs/pull/*:refs/remotes/origin/pr/*') 
} 

Ich vermute, dass remote.github in diesem Format mit einem einzelnen Schrägstrich sein muss.

+0

Dies ist jedoch nicht wirklich eine Antwort. Was sollte OP tun, um das Problem zu lösen? Das klingt eher wie ein Kommentar, der für die Plugin-Entwickler gedacht ist. – Tunaki

+0

Ich denke, das Überprüfen der Tokens wäre der nächste Schritt, was denkst du? –

+0

@Tunaki Aber ich stimme dir zu, dass es ein Fehler im Plugin ist, da es nicht zulassen sollte, dass es so weit geht mit falschen Zugangsdaten und einem Fehler mit einer Laufzeitausnahme. –