Giter Club home page Giter Club logo

jenkins-mattermost-plugin's People

Contributors

ahippo avatar covert8 avatar dave-miles avatar deeepsig avatar dependabot[bot] avatar dpires avatar eirikwang avatar ewelinawilkosz avatar grantmd avatar idserda avatar jovandeginste avatar kei-yamazaki avatar kmadel avatar limech avatar mariosteinitz avatar maxcruz avatar ndeloof avatar nicolasbacot avatar owenscode avatar peergum avatar philowest avatar prasadlvi avatar randomsync avatar samrocketman avatar schisamo avatar sergk8 avatar stevengbrown avatar tbartley avatar vikulin avatar ystradmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

jenkins-mattermost-plugin's Issues

support for TLS v1.2

Hi,
i try to connect to a mattermost-host which only supports TLS v1.1/v1.2 and i always get a javax.net.ssl.SSLException: Received fatal alert: protocol_version

Adding -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true to jenkins' java-cmd did not help.
Adding -Dhttps.protocols=TLSv1.2 to the global MAVEN_OPTS did also not fix anything.

Any idea?

Cannot update Jenkins config.xml via POST

Hi!

Thanks for this plugin. It works great for me, except that I manage my Jenkins job configurations by POSTing config.xml for each job that I have configured. This allows me to easily manage many jobs and update them with new settings, however something in this plugin does not like this procedure.

If I configure the post-build action via the web interface it works fine, but as soon as I POST config.xml it disappears, even if I use exactly the same config.xml that I retrieve from the job (using the encrypted endpoint value).

It appears to be something to do with the encryption used for the endpoint. I tried configuring the endpoint as a global setting and leaving the <endpoint> value blank, as well as removing it entirely, but whatever I do, as soon as config.xml is POSTed, the whole mattermost post-build action disappears.

I normally update config.xml using curl, and so tried using jenkins-cli.jar instead to see if that made any difference, but no change.

The only thing relevant that I can see in the log is this:

Nov 01, 2019 10:41:07 AM WARNING hudson.util.Secret toString
Use of toString() on hudson.util.Secret from hudson.util.Secret$1.convert(Secret.java:306). Prefer getPlainText() or getEncryptedValue() depending your needs. see https://jenkins.io/redirect/hudson.util.Secret/

Let me know if you need any further information.

Thanks.

Error posting to Mattermost : hostname in certificate did not match

Hello,

While testing the connection between my Jenkins and Mattermost instances, I get the following error :

Error posting to Mattermost
javax.net.ssl.SSLException: hostname in certificate didn't match: <mattermostinstance> != </platform on which mattermost is running>

My mattermost instance is on a platform using SNI for HTTPS, and the name provided in the certificate is the one of the platform : I suspect the plugin does not handle SNI.

I found multiple reports of similar issues with other Jenkins plugin :
https://issues.jenkins-ci.org/browse/JENKINS-37030
https://issues.jenkins-ci.org/browse/JENKINS-40903

I'm not extremely skilled in Java, but I can try to provide a fix if this issue is not being worked on already.

Regards,

webhook

i think the help text on the endpoint could be clearer (e.g. by mentioning that you have to enter a webhook url)

Failure message not being delivered

I've added "Notify Build Start", "Notify Aborted", "Notify Failure" and "Notify Success" options to the plugin for a job. All the notifications seem to work fine except the "Notify Failure" which isn't showing up. I have yet to check the logs since I don't have access to them at the moment, but I was wondering if this is something you've seen before?

Send job Build Stability

Would be possible send build stability of the job. Or send notification message with custom count failures.

Support direct message channels with spaces

I just played around with the new direct message channels features. Yet lowercase author (bot) names with dashes do not look very pretty in our Mattermost channels. Therefore, I was wondering whether we could remove the space from the roomIds splitting and trim the channel / author names after they have been extracted from the room IDs. This would allow for author names with spaces...

Sending a message to a different team is not working

Hi, I am trying to get this plugin working for my team.
The plugin works as expected in team#1, however does not work at all for team#2 (although they both exist under the same organization (server). I've tried setting the endpoint to match the MM-URL of team#2, but I am still getting an error.


"Mattermost send pipeline step configured values from global config - connector: false, icon: true, channel: false, color: falseERROR: Mattermost notification failed. See Jenkins logs for details."


Note that:

  • I am not the one who set this plugin up (somebody from team#1 did)
  • if I want to look into the main Jenkins logs, I'd have to request that from the Jenkins server maintainers.

I don't know if this is an issue, me using the plugin incorrectly or just a matter of adjusting the global configuration for the jenkins-mattermost plugin

Add multiple plugins to one job

I would like to configure different notification settings for different channels. If I add multiple mattermost post-build actions to one jobs it seems only the last one is executed. Is there any way to add one plugin for all notifications and one for only failed ones?

Include diffs to previous run in test results

Wouldn't it be sweet to have the test result diffs posted with the rest of the test stats?
This way I wouldn't have to look previous runs up in mattermost's history ... a big win for me at least :)

Now I'm totally unfamiliar with Jenkins internals, but it seems to me that AbstractTestResultAction provides ways to access previous runs or even diffs directly (getFailureDiffString()?).

IMO that would be a great improvement!

"Test connection" gives "Failure"

Hi,

I have both Jenkins and Mattermost set up on my home server.
Both are behind a reverse proxy (NGINX).

My Mattermost URL points to a public IP, and while I'm able to access it from the application, or even to post a message via webhook using curl, I can't connect from Jenkins.

I entered webhook URL in "Endpoint" field, tried with no channel name, tried public/private channels, with/without # in front of the channel name - I always get "Failure".

My NGINX forces HTTPS (self-signed cert), is that causing the issue? I've tried to install a Jenkins plugin https://wiki.jenkins-ci.org/display/JENKINS/Skip+Certificate+Check+plugin but it didn't help.

Ideas?
Thanks

Custom message on each task

Hi,

I'd like to know if it is possible, for each notification kind, to set a custom message.
I'd like, for example, on a broken build notify concerned users with @ markup.

Thanks

Posting in Mattermost not working

Hi,

in my environment Jenkins and Mattermost (GitLab Omnibus) are running on two different servers (CentOS, OpenJDK 8, no Docker) with self signed certificates. I added the certificates to the JKS and the appropriate Mattermost, Jenkins and OS folders on both servers.

Jenkins Settings:

Endpoint: https://mymattermost.local:8066/hooks/123xyz
Channel: jenkins-testing
Icon: empty
Build Server URL: https://myjenkins.local

When I run the connection test in the Jenkins log shows the following:

May 23, 2018 1:13:39 PM INFO jenkins.plugins.mattermost.StandardMattermostService publish
Posting: to jenkins-testing@https://mymattermost.local:8066/hooks/123xyz: Mattermost/Jenkins plugin: you're all set! (parameters: endpoint='https://mymattermost.local:8066/hooks/123xyz', room='jenkins-testing', icon='', buildServerUrl='https://myjenkins.local/') (good)
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodBase readResponseBody
Response content length is not known
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
I/O exception (javax.net.ssl.SSLPeerUnverifiedException) caught when processing request: peer not authenticated
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
Retrying request
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodBase readResponseBody
Response content length is not known
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
I/O exception (javax.net.ssl.SSLPeerUnverifiedException) caught when processing request: peer not authenticated
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
Retrying request
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodBase readResponseBody
Response content length is not known
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
I/O exception (javax.net.ssl.SSLPeerUnverifiedException) caught when processing request: peer not authenticated
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
Retrying request
May 23, 2018 1:13:39 PM INFO org.apache.commons.httpclient.HttpMethodBase readResponseBody
Response content length is not known
May 23, 2018 1:13:39 PM WARNING jenkins.plugins.mattermost.StandardMattermostService publish
Error posting to Mattermost
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
	at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:431)
	at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:257)
	at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:200)
	at org.apache.commons.httpclient.HttpConnection.tunnelCreated(HttpConnection.java:793)
	at org.apache.commons.httpclient.HttpMethodDirector.executeConnect(HttpMethodDirector.java:521)
	at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
	at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:178)
	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:404)
	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:330)
	at jenkins.plugins.mattermost.StandardMattermostService.publish(StandardMattermostService.java:99)
	at jenkins.plugins.mattermost.StandardMattermostService.publish(StandardMattermostService.java:41)
	at jenkins.plugins.mattermost.MattermostNotifier$DescriptorImpl.doTestConnection(MattermostNotifier.java:452)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
	at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
	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:841)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	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:198)
	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at org.jenkinsci.plugins.cas.spring.security.CasSingleSignOutFilter.doFilter(CasSingleSignOutFilter.java:39)
	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:90)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:564)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
	at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
	at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
May 23, 2018 1:13:39 PM INFO jenkins.plugins.mattermost.StandardMattermostService publish
Posting succeeded

The gitlab_mattermost_access log shows nothing in this case.

Testing from Jenkins server using curl works as expected:
curl -i -X POST -d 'payload={"text": "Hello\nText"}' https://mymattermost.local:8066/hooks/123xyz
Here the gitlab_mattermost_access log shows "POST /hooks/123xyz HTTP/1.1" 200 2 "" "curl/7.58.0"

Any idea why the connection fails?
Thanks in advance!

Mattermost dedicated proxy settings

Would it be possible to add mattermost dedicated proxy settings?
We have a mattermost instance in the internet, but whole CI/CD is located in corporate network.
We can access this mattermost instance with setting up proxy in Jenkins, but that settings affects other things in Jenkins also.

Separate proxy settings in the mattermost-plugin section would do the job nicely, without having to reinvent the wheel and preparing custom solutions.

Regards,
b.

Problem Connecting Mattermost to Jenkins

Hi,

i got some problem connecting Mattermost with Jenkins.
Scenario: two different servers, one running mattermost the other running jenkins.

Curl as mentioned here goes trough and produces output.
https://docs.mattermost.com/developer/webhooks-incoming.html

curl -i -X POST -d 'payload={"text": "Hello, this is some text.\nThis is more text."}' http://yourmattermost.com/hooks/xxx-generatedkey-xxx

The test connection button in jenkins for the plugin generates something like this at the mattermost site:

[2016/12/14 16:53:02 CET] [DEBG] websocket.authTicker: did not authenticate ip=127.0.0.1:44516
[2016/12/14 16:53:02 CET] [DEBG] websocket.read: closing websocket for userId= error=read tcp 127.0.0.1:8065->127.0.0.1:44516: use of closed network connection
[2016/12/14 16:53:04 CET] [DEBG] websocket.authTicker: did not authenticate ip=127.0.0.1:44528
[2016/12/14 16:53:04 CET] [DEBG] websocket.read: closing websocket for userId= error=read tcp 127.0.0.1:8065->127.0.0.1:44528: use of closed network connection
[2016/12/14 16:53:04 CET] [DEBG] websocket.authTicker: did not authenticate ip=127.0.0.1:44530
[2016/12/14 16:53:04 CET] [DEBG] websocket.read: closing websocket for userId= error=read tcp 127.0.0.1:8065->127.0.0.1:44530: use of closed network connection

I am somehow lost on where to correct this IP mistake as the proxy setting , mentioned in help text, do not seem to help in this case.

Best Regards.

Notifications not working for promoted builds plugin Mattermost notificaition as a promotion process action

Mattermost Notifications are working fine for Post-build Actions for me. However, when I configure Mattermost Notifications as promotion process action (from the promoted builds plugin), and tick all the boxes there, I do not receive notifications when promotions start / finish.
(In jenkins.log, it shows the start / finish notifications for the build, but not the promotion.)

Note that with the HipChat Plugin, notifications for promotions do work.

Mattermost Notifications 2.6.2
Jenkins 2.150.2

Notification incorrectly counts affected files

I recently experienced a situation where the plugin sent a notification about a build which included 2 commits, of the following format:
Commit 1:

  • foo/bar - edit
  • foo/baz - edit
    Commit 2:
  • foo/bar - edit

The notification claimed that 3 files were changed. When looking above, it's clear that only 2 files were affected.

It appears this is due to the use of a HashSet<AffectedFile> in ActiveNotifier.getChanges, which i'm guessing the implementation for the AffectedFile interface must not hash based on purely the filename alone. This was using a git repository. I believe it's safer to either use the original getAffectedPaths method, or to get the Paths from each AffectedFile so that the set is based correctly on file paths.

Support for direct message channels

Hello,

Thank you for creating this extremely useful plugin, we use it extensively in my department. One small problem we have with it, however, is that we can't upgrade from version 2.0.2 because direct message channels no longer work. The problem comes from the fact that direct message channel names are in the format @dmchannel and this is not compatible witth the plugin logic where you can specify user@channel.

In our Mattermost set-up, we have a user called jenkins that owns the webhooks and this means that if you specify @username as the Mattermost channel, the user will get a direct message from the jenkins user. This is useful because users are more likely to notice direct messages.

Anyway, I have attached a patch that I made to the code on the master branch that I have recently tried in a test jenkins installation. I would be very grateful if you would consider adding this or something simlilar to a future release.

Many thanks

mmplugin.patch.txt

Plugin does not support multiple no-proxy hosts

Plugin seems to access ProxyConfiguration.noProxyHosts directly and then attempts to convert glob -> regex.

If it used ProxyConfiguration.getNoProxyHostPatterns() then it would be able to handle multiple hosts and avoid the need to try and convert globs to regexes.

Change of endpoint from String to Secret incomplete?

Hey there,

Thanks for the great work on the plugin. It's working perfectly fine for us so far, but the latest release 2.7.1 doesn't seem to work as expected.

In the commit diff I see that that endpoint type has been changed from String to hudson.util.Secret. So in our JobDSL script this doesn't work anymore:

mattermostNotifier {
  endpoint('https://mattermost.mycompany.com/hooks/gtw8oerghvk6lpoqwrd5fg12hg')
  buildServerUrl('https://jenkins.mycompany.com/')
  room('#build-notifications')
  startNotification(false)
  notifyAborted(true)
  notifyFailure(true)
  notifyNotBuilt(false)

I'm not an expert on Jenkins, but I assume that the endpoint as a Secret now refers to a secret that I need to set up manually at https://jenkins.mycompany.com/credentials/store/system/domain/_/newCredentials.

Usually such a field would show up as a dropdown form field in a job's configuration, with the option to pick a secret that was specified by the Jenkins admin at the aforementioned URL.
But in this case it's still a regular textfield. Also, in the config.jelly I still see it configured as:

        <f:entry title="Endpoint" help="/plugin/mattermost/help-projectConfig-mattermostEndpoint.html">
            <f:textbox field="endpoint" />
        </f:entry>

Am I interpreting this correctly? Any help is appreciated.

Thanks!

Mattermost moving to API version 4

Hey @jovandeginste !

First, hugely appreciate you sharing this project back with the world. Fantastic work!

I wanted to let you know about our plans moving to API v4:

To make the Mattermost API web service easier to use and to offer more powerful options for these integrations, Mattermost will be moving to a new API version soon. Highlights include:

  • Fully documented API endpoints
  • More in-depth access to server functionality
  • Wider use of established HTTP verbs
  • Consistent endpoint structures
  • A new and improved Go driver

We plan to release API version 4 on March 16th, with Mattermost server 3.7. While the current API version 3 will be supported until September 16th, we recommend you begin using API version 4 soon after its release.

Contributing

API version 4 is an active and on-going project. If you're interested in helping contribute, please join our Mattermost community instance and the APIv4 channel.

We've prepared a contribution process for APIv4 and a progress tracker for new APIv4 enpoints to help you get started.

We're also open for suggestions on adding new API endpoints to help with your integration.

Make username field configurable

Hi,

I'm using mattermost plugin to send alerts for failed jobs to a central Mattermost instance. I have multiple jenkins servers that all end up using the same username "jenkins" in the alerts channel. The alert origin is differentiable by the custom icon I send with the alert but it would be really nice if the plugin would allow to override the default username "jenkins" with a custom one.

Quick question about my testing Jenkins connection with mattermost

Hi

Nice to meet you, today i am playing mattermost with my Jenkins, using Mattermost Notification Plugin version 1.4.0
But unlucky i find that's an access denied issue, appreciate that your advise

My incoming webhooks is OK, as when i run below command, it can shows the message
curl -i -X POST -d 'payload={"text": "Hello, this is some text.\nThis is more text."}' http://:8065/hooks/8g6y9awyjpdq7d1aff7wfnhh8a

But after i did the config in Jenkins like below. it fails as of access denied
Jenkins config:
Endpoint:http://:8065/hooks/8g6y9awyjpdq7d1aff7wfnhh8a
Channel:
Build Server URL:http://:8080/

error:
Mar 16, 2016 9:19:33 AM jenkins.plugins.mattermost.StandardMattermostService publish
INFO: Posting: to icon: , on http://:8065/hooks/8g6y9awyjpdq7d1aff7wfnhh8a: Mattermost/Jenkins plugin: you're all set! (using ) good
Mar 16, 2016 9:19:33 AM jenkins.plugins.mattermost.StandardMattermostService publish
WARNING: Mattermost post may have failed. Response:

<TITLE>Access Denied</TITLE>
Access Denied (policy_denied)

Your system policy has denied access to the requested URL.

For assistance, contact your network support team.

Mar 16, 2016 9:19:33 AM jenkins.plugins.mattermost.StandardMattermostService publish
INFO: Posting succeeded

Add post-build to all jobs?

Is it possible to hook all jobs and send a post-build action to this plugin? We have a lot of jobs managed by different people and would like to get notifications (like email) when a job fails, without needing to modify each job

Test Connection Failure - Couldn't find the channel

Hi,
I am trying to setup Jenkins Hook for Mattermost. But, failed at Test Connection with the following error.

Pls help.

Jenkins log

Nov 02, 2016 4:46:54 PM INFO jenkins.plugins.mattermost.StandardMattermostService publish
Posting succeeded
Nov 02, 2016 4:46:55 PM INFO jenkins.plugins.mattermost.StandardMattermostService publish
Posting: to im1kxtoxmpn1zkfb6yi8w81mmr@http://<host>:<port>/hooks/4hysn9qnntdhxruc936hp4amhr: Mattermost/Jenkins plugin: you're all set! (parameters: endpoint='http://<host>:<port>/hooks/4hysn9qnntdhxruc936hp4amhr', room='im1kxtoxmpn1zkfb6yi8w81mmr', icon='null', buildServerUrl='null') (good)
Nov 02, 2016 4:46:55 PM WARNING jenkins.plugins.mattermost.StandardMattermostService publish
Mattermost post may have failed. Response: <html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx</center>
</body>
</html>

Mattermost log

[2016/11/02 16:47:49 SGT] [EROR] /hooks/4hysn9qnntdhxruc936hp4amhr:incomingWebhook code=500 rid=6isnpz1ucp8yznn7iad3oep9ue uid= ip=10.92.142.70 Couldn't find the channel [details: err=store.sql_channel.get_by_name.missing.app_error]

Jenkins Pipeline

Hi,

How do I get this to work with pipelines (if it's possible) ? I can't seem to find the docs for this.

For example, slack-plugin has this:
slackSend color: 'good', message: 'Message from Jenkins Pipeline'

TIA

DM to the buildbreakers

As in title: I'd like to have possibility to send direct messages to the developers who caused build to fail (as in mailer plugin for example).

License file?

Hi @jovandeginste thanks for creating the Jenkins plug-in!

The Mattermost team would like to list this for our community to use, but in order to do so, we need a license file,

If you create a LICENSE.txt file from the GitHub interface it will suggest some possible licenses and you can select one you feel appropriate--takes less than 2-3 minutes to do.

Would you be open to helping complete this so your work can be more easily shared with others, based on the terms you decide?

Update dependencies

In order to get some tests to work properly, the build and test dependencies should be updated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.