Provides Jenkins notification integration with Slack or Slack compatible applications like RocketChat and Mattermost.
- Get a Slack account: https://slack.com/
- Configure the Jenkins integration: https://my.slack.com/services/new/jenkins-ci
- Install this plugin on your Jenkins server.
- Configure it in your Jenkins job (and optionally as global configuration) and add it as a Post-build action.
- Log into Slack compatible application.
- Create a Webhook (it may need to be enabled in system console) by visiting Integrations.
- You should now have a URL with a token. Something like
https://mydomain.com/hooks/xxxx
wherexxxx
is the integration token andhttps://mydomain.com/hooks/
is theBase URL
. - Install this plugin on your Jenkins server.
- Configure it in your Jenkins job (and optionally as global configuration) and add it as a Post-build action.
Use Jenkins Credentials and a credential ID to configure the Slack integration token. It is a security risk to expose your integration token using the previous Integration Token setting.
Create a new Secret text credential:
Select that credential as the value for the Integration Token Credential ID field:
You can send messages to channels or you can notify individual users via their
slackbot. In order to notify an individual user, use the syntax @user_id
in
place of the project channel. Mentioning users by display name may work, but it
is not unique and will not work if it is an ambiguous match.
This plugin supports sending notifications via bot users. You can enable bot user support from both global and project configurations. If the notification will be sent to a user via direct message, default integration sends it via @slackbot, you can use this option if you want to send messages via a bot user. You need to provide credentials of the bot user for integration token credentials to use this feature.
Bot user option is not supported, if you use Base Url for a Slack compatible application.
Includes Jenkins Pipeline support as of version 2.0:
slackSend color: 'good', message: 'Message from Jenkins Pipeline'
Additionally you can pass a JSONArray as a String in order to send complex messages, as per the example:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
node {
JSONArray attachments = new JSONArray();
JSONObject attachment = new JSONObject();
attachment.put('text','I find your lack of faith disturbing!');
attachment.put('fallback','Hey, Vader seems to be mad at you.');
attachment.put('color','#ff0000');
attachments.add(attachment);
slackSend(color: '#00FF00', channel: '@gustavo.maia', attachments: attachments.toString())
}
For more information about slack messages see Slack Messages Api and Slack attachments Api
This plugin supports configuration as code Add to your yaml file:
credentials:
system:
domainCredentials:
- credentials:
- string:
scope: GLOBAL
id: slack-token
secret: '${SLACK_TOKEN}'
description: Slack token
unclassified:
slackNotifier:
teamDomain: <your-slack-workspace-name> # i.e. your-company (just the workspace name not the full url)
tokenCredentialId: slack-token
Install Maven and JDK.
$ mvn -version | grep -v home
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00)
Java version: 1.7.0_79, vendor: Oracle Corporation
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-65-generic", arch: "amd64", family: "unix"
Run unit tests
mvn test
Create an HPI file to install in Jenkins (HPI file will be in
target/slack.hpi
).
mvn clean package