Jenkins: уведомление в Slack из Jenkins Scripted Pipeline

By | 07/25/2018
 

Имеется Jenkins-job, из которой необходимо отправлять уведомления по завершению билда.

В Jenkins для этого имеется Slack Notification, который и применим.

Хороший пост по теме – тут>>>.

Устанавливаем его:

Настраиваем Slack – переходим на https://setevoy.slack.com/apps/new/A0F7VRFKN-jenkins-ci (меняем setevoy на ваш URL, само собой), и добавляем Jenkins:

И следуем инструкции:

Настройка Slack Notification

Переходим в Jenkins > Global configuration, внизу настраиваем Slack Notification плагин:

Токен добавляем в Credentials:

Жмём Test connection:

Jenkins Pipeline

Тут всё ещё проще – добавляем вызов плагина:

slackSend color: 'good', message: 'Message from Jenkins Pipeline'

Запускаем билд:

А дальше играемся со цветами и текстом, хороший пример есть тут>>>:

def notifySlack(String buildStatus = 'STARTED') {
    
    // Build status of null means success.
    buildStatus = buildStatus ?: 'SUCCESS'

    def color

    if (buildStatus == 'STARTED') {
        color = '#D4DADF'
    } else if (buildStatus == 'SUCCESS') {
        color = '#BDFFC3'
    } else if (buildStatus == 'UNSTABLE') {
        color = '#FFFE89'
    } else {
        color = '#FF9FA1'
    }

    def msg = "${buildStatus}: `${env.JOB_NAME}` #${env.BUILD_NUMBER}:\n${env.BUILD_URL}"

    slackSend(color: color, message: msg)
}

node {
    try {
        notifySlack()
        sh 'runbuild'
    } catch (e) {
        currentBuild.result = 'FAILURE'
        throw e
    } finally {
        notifySlack(currentBuild.result)
    }
}

Запускаем, билд фейлится на sh 'runbuild', получаем сообщения:

Готово.