Je dois configurer Jenkins pour envoyer des notifications sur nos #builds de canaux Slack . J'ai configuré l'intégration Jenkins CI dans Slack. En conséquence, j'ai un jeton "abcdefgh666" et lorsque je développe les "Instructions de configuration", je peux voir que notre domaine d'équipe est "mysuperteam". Nous nous connectons à slack avec l’url http://mysuperteam.slack.com
Je suis bloqué à l'étape 3. Sur Slack doc , la capture d'écran est la suivante:
Mais dans notre version de Jenkins, la vue ressemble à ceci:
Évidemment, le bouton Tester la connexion renvoie toujours un échec. Dans les journaux Jenkins, j'ai plusieurs fois ceci:
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)
J'ai essayé d'utiliser le menu des identifiants pour éviter de mettre le jeton directement, j'ai essayé de mettre "slack.com" dans le champ "URL de base", j'ai essayé de cocher ou décocher la case "Est-ce que l'utilisateur de bot est?" et j'ai essayé de mettre " http://mysuperteam.slack.com " dans le champ "URL de base".
Ma configuration est-elle correcte? Qu'est-ce qui pourrait empêcher Jenkins de se connecter à Slack?
Enfin, le problème était un bug temporaire. Notre configuration était valide et les tests effectués quelques jours plus tard semblent bien fonctionner.
Nous avons rempli les entrées Team Subdomain
et Integration Token
avec les informations trouvées dans notre page de gestion des applications Slack. De plus, nous avons défini le nom de la variable Channel
où Jenkins enverra des notifications:
Nous n'avons rien mis dans Slack Webhooks Settings
:
Important: N'oubliez pas de sauvegarder vos paramètres avant de cliquer sur le bouton "Tester la connexion".
Versions: Jenkins 2.46/Slack Notification Plugin 2.2. Informations sur les paramètres disponibles sur https://github.com/jenkinsci/slack-plugin
laissez "baseUrl" vide, et sauvegardez-le avant le test via "TestConnection".
J'ai eu le même problème et ai découvert que je devais créer un Webhook entrant sur l'interface slack ( https://slack.com/apps/A0F7XDUAZ-incoming-webhooks )
Mais je ne peux toujours pas le faire fonctionner ...
edit: j’ai peut-être mal interprété les instructions d’installation de https://github.com/jenkinsci/slack-plugin , quoi qu’il en soit, il n’est pas à jour.
J'exécute Jenkins dans l'environnement Windows en tant que service. Notre Jenkins est derrière le pare-feu et le proxy du corprate, donc je recevais une erreur "407 - Proxy Auth Required". Résolu ce problème en démarrant le service Jenkins en utilisant mon ID de domaine.