it-swarm.com.de

Jenkins/Slack-Integration

Ich muss Jenkins so konfigurieren, dass eine Benachrichtigung über unseren Slack-Kanal #builds ..__ gesendet wird. Ich habe die Jenkins CI-Integration in Slack konfiguriert. Als Ergebnis habe ich ein Token "abcdefgh666", und wenn ich die "Setup-Anweisungen" erweitere, sehe ich, dass unsere Teamdomäne "mysuperteam" ist. Wir verbinden uns mit der URL http://mysuperteam.slack.com

Ich stehe auf Schritt 3. Auf Slack doc ist der Screenshot der folgende:

 slack screen

In unserer Jenkins-Version sieht die Ansicht jedoch so aus:

 my screen

Offensichtlich gibt die Schaltfläche Verbindung testen immer einen Fehler zurück. In Jenkins Protokollen habe ich so oft:

Mar 30, 2017 2:14:38 PM WARNING jenkins.plugins.slack.StandardSlackService publish
Error posting to Slack
Java.lang.IllegalStateException: Target Host is null
    at org.Apache.http.util.Asserts.notNull(Asserts.Java:46)
    at org.Apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.Java:125)
    at org.Apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.Java:185)
    at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:82)
    at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:106)
    at jenkins.plugins.slack.StandardSlackService.publish(StandardSlackService.Java:126)
    at jenkins.plugins.slack.SlackNotifier$DescriptorImpl.doTestConnection(SlackNotifier.Java:510)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.Java:335)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.Java:175)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.Java:108)
    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)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.Java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.Java:236)
    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:236)
    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(ThreadPoolExecutor.Java:1145)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
    at Java.lang.Thread.run(Thread.Java:745)

Ich habe versucht, das Anmeldeinformationsmenü zu verwenden, um zu vermeiden, das Token direkt zu setzen. Ich habe versucht, "slack.com" in das Feld "Base URL" zu setzen. Feld, und ich habe versucht, " http://mysuperteam.slack.com " in das Feld "Base URL" zu setzen.

Ist meine Konfiguration korrekt? Was könnte Jenkins davon abhalten, sich mit Slack zu verbinden?

10
Antwane

Schließlich war das Problem ein vorübergehender Fehler. Unsere Konfiguration war gültig und das erneute Testen nach einigen Tagen scheint gut zu funktionieren.

Wir haben Team Subdomain und Integration Token Eingaben mit Informationen gefüllt, die auf unserer Slack-Apps-Verwaltungsseite zu finden sind. Außerdem legen wir den Namen der Variable Channel fest, an die Jenkins Push-Benachrichtigungen senden wird:

 global config

Wir haben nichts in Slack Webhooks Settings gesetzt:

 webhooks

Important: Denken Sie daran, Ihre Einstellungen zu speichern, bevor Sie auf die Schaltfläche "Test Connection" klicken.

Versionen: Jenkins 2.46/Slack Notification Plugin 2.2. Einstellungsinformationen unter https://github.com/jenkinsci/slack-plugin

4
Antwane

lassen Sie "baseUrl" leer, und speichern Sie sie vor dem Test über "TestConnection".

11
Taejun Jang

Ich hatte das gleiche Problem und stellte fest, dass ich einen eingehenden Webhook auf der Slack-Benutzeroberfläche erstellen musste ( https://slack.com/apps/A0F7XDUAZ-incoming-webhooks ).
Aber ich kann es immer noch nicht zum Laufen bringen ...

edit: Ich habe die Installationsanweisung unter https://github.com/jenkinsci/slack-plugin möglicherweise falsch interpretiert, sie ist jedoch nicht auf dem neuesten Stand

1
Banibal

Ich verwende Jenkins als Dienst in der Windows-Umgebung. Unser Jenkins steht hinter der Firewall und dem Corprate-Proxy, also erhielt ich den Fehler "407 - Proxy Auth Required". Dieses Problem wurde behoben, indem der Jenkins-Dienst mit meiner Domänen-ID gestartet wurde. 

0
Karthik