1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# #No shebang necessary
# BASH Lib: Simple incoming webhook for slack integration.
#
# The script expects the following parameters to be defined by the upper layer:
# SLACK_NOTIFY_WEBHOOK_URL
# SLACK_BOT_NAME
# SLACK_CHANNEL
#
# Copyright:
#
# Author: Pavlos Emm. Katsoulakis <paul@netdata.cloud
post_message() {
TYPE="$1"
MESSAGE="$2"
CUSTOM_CHANNEL="$3"
case "$TYPE" in
"PLAIN_MESSAGE")
curl -X POST --data-urlencode "payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${SLACK_BOT_NAME}\", \"text\": \"${MESSAGE}\", \"icon_emoji\": \":space_invader:\"}" "${SLACK_NOTIFY_WEBHOOK_URL}"
;;
"TRAVIS_MESSAGE")
if [ "${TRAVIS_EVENT_TYPE}" == "pull_request" ] || [ "${TRAVIS_BRANCH}" != "master" ] ; then
echo "Skipping notification due to build type."
return 0
fi
if [ -n "${CUSTOM_CHANNEL}" ]; then
echo "Sending travis message to custom channel ${CUSTOM_CHANNEL}"
OPTIONAL_CHANNEL_INFO="\"channel\": \"${CUSTOM_CHANNEL}\","
fi
POST_MESSAGE="{
${OPTIONAL_CHANNEL_INFO}
\"text\": \"${TRAVIS_REPO_SLUG}, ${MESSAGE}\",
\"attachments\": [{
\"text\": \"${TRAVIS_JOB_NUMBER}: Event type '${TRAVIS_EVENT_TYPE}', on '${TRAVIS_OS_NAME}' \",
\"fallback\": \"I could not determine the build\",
\"callback_id\": \"\",
\"color\": \"#3AA3E3\",
\"attachment_type\": \"default\",
\"actions\": [
{
\"name\": \"${TRAVIS_BUILD_NUMBER}\",
\"text\": \"Build #${TRAVIS_BUILD_NUMBER}\",
\"type\": \"button\",
\"url\": \"${TRAVIS_BUILD_WEB_URL}\"
},
{
\"name\": \"${TRAVIS_JOB_NUMBER}\",
\"text\": \"Job #${TRAVIS_JOB_NUMBER}\",
\"type\": \"button\",
\"url\": \"${TRAVIS_JOB_WEB_URL}\"
}]
}]
}"
echo "Sending ${POST_MESSAGE}"
curl -X POST --data-urlencode "payload=${POST_MESSAGE}" "${SLACK_NOTIFY_WEBHOOK_URL}"
;;
*)
echo "Unrecognized message type \"$TYPE\" was given"
return 1
;;
esac
}
|