summaryrefslogtreecommitdiff
path: root/scripts/notifications.sh
blob: d1b11d44e88098b548900f82f04ad0276edb2697 (plain)
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
# Sends Slack notification MSG to CI_SLACK_WEBHOOK_URL (which needs to be set).
# ICON_EMOJI needs to be set to an icon emoji name (without the `:` around it).
function notify_slack() {
    CHANNEL=$1
    MSG=$2
    ICON_EMOJI=$3

    if [ -z "$CHANNEL" ] || [ -z "$CI_SLACK_WEBHOOK_URL" ] || [ -z "$MSG" ] || [ -z "$ICON_EMOJI" ]; then
        echo "Missing argument(s) - Use: $0 channel message icon_emoji"
        echo "and set CI_SLACK_WEBHOOK_URL environment variable."
    else
        curl -X POST --data-urlencode 'payload={"channel": "#'"${CHANNEL}"'", "username": "GitLab QA Bot", "text": "'"${MSG}"'", "icon_emoji": "'":${ICON_EMOJI}:"'"}' "${CI_SLACK_WEBHOOK_URL}"
    fi
}

function notify_on_job_failure() {
    JOB_NAME=$1
    CHANNEL=$2
    MSG=$3
    ICON_EMOJI=$4

    local job_id
    job_id=$(scripts/get-job-id "$CI_PROJECT_ID" "$CI_PIPELINE_ID" "$JOB_NAME" -s failed)
    if [ -n "${job_id}" ]; then
        notify_slack "${CHANNEL}" "${MSG}" "${ICON_EMOJI}"
    fi
}