5

I know how to notify build status using the slack notification plugin. I can seeproject - #buildnumber Success after 1 min 18 sec (Open) in my slack channel. But I want the console output to be sent to slack as well (upon failure) instead of a link. I am using free style project since I need some scripts to build my project. The purpose is that I want engineers to know the result of their build without granting them Jenkins access.

edit:

if console log can be uploaded as a text, would be also good. Other forms of 'output' would be welcome as well.

new edit:

I found the answer by myself.

tikael
  • 201
  • 1
  • 2
  • 6

3 Answers3

5

I figured it out by myself, there is no plugin needed.

build.sh &> /dev/stdout | tee jenkins.txt and then curl -F file=@jenkins.txt -F channels=yourchannel -H "Authorization: Bearer your token" https://slack.com/api/files.upload

There is no '#' needed for slack channel and channel should not be private.

And if you use buils.sh | tee jenkins.log then you can't get the log from stderr.

Pierre.Vriens
  • 7,225
  • 14
  • 39
  • 84
tikael
  • 201
  • 1
  • 2
  • 6
2

You probably want the console output to be posted as an attachment, not a message, to slack. The post to slack plugin might be what you are looking for.

The other thing you could do is create a part of the freestyle job that strips out what you want to a text file, and add that as part of the slack message attachment, in the slack plugin configuration.

Bruce Becker
  • 3,783
  • 4
  • 20
  • 41
1

Posting the full stack trace tends to clog up the channel. Here are a few things you can do:

  • Send build status along with the Jenkins Job link to the Channel so Devs can come back to the link for debugging
  • Send stack trace as a file
  • Send build status as and link to channel and Stack trace info to the user who committed the code for build

Either way, Post to Slack plugin along with other plugins will help you address this need.

JohnK
  • 11
  • 1