I recently needed to post to Slack from a Jenkins build but since the Slack Plugin for Jenkins doesn’t provide fine-grained configuration, I used a curl script in a post-build script.

First, I created a new Jenkins CI configuration in Slack and noted the token it gave me ($SLACK_API_TOKEN below). Then, this is the curl script I used:

if [ "$GIT_BRANCH" = "origin/master" ]
then
curl -X POST -H "Content-Type: application/json" \
 -d '{"text":"'"$JOB_NAME"' - #'"$BUILD_NUMBER"' Failed on '"$GIT_BRANCH"' branch - '"$BUILD_URL"'"}' \
 "https://[domain].slack.com/services/hooks/jenkins-ci?token=$SLACK_API_TOKEN"
fi