From f26af0c3a6d8dd3a2e437fa302b816aebac58d76 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 24 Oct 2016 21:46:22 +0200 Subject: [PATCH] Jenkinsfile: add mattermost notifications --- Jenkinsfile | 59 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 348be44..2ea2536 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,10 +1,51 @@ -node { - stage 'Checkout' - checkout scm - - stage 'Build' - sh "make V=s" - - stage 'Archive' - archive 'output/**/*' +def _pipelineNotify(String buildStatus = 'STARTED') { + // build status of null means successful + buildStatus = buildStatus ?: 'SUCCESSFUL' + + // Default values + def colorName = 'RED' + def colorCode = '#FF0000' + def subject = "${buildStatus}: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'" + def summary = "${subject} (${env.BUILD_URL})" + + // Override default values based on build status + if (buildStatus == 'STARTED') { + color = 'YELLOW' + colorCode = '#FFFF00' + } else if (buildStatus == 'SUCCESSFUL') { + color = 'GREEN' + colorCode = '#00FF00' + } else { + color = 'RED' + colorCode = '#FF0000' + } + + try { + mattermostSend (color: colorCode, message: summary) + } + catch (e) { + echo 'Unable to sent Mattermost notification' + } +} + +node { + try { + _pipelineNotify() + + stage 'Checkout' + checkout scm + + stage 'Build' + sh "make V=s" + + stage 'Archive' + archive 'output/**/*' + } + catch (e) { + currentBuild.result = "FAILED" + throw e + } + finally { + _pipelineNotify(currentBuild.result) + } }