Jenkins管道构建失败后如何发送Slack通知? [英] How to send Slack notification after Jenkins pipeline build failed?

查看:515
本文介绍了Jenkins管道构建失败后如何发送Slack通知?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Jenkins v2.19中我有一个管道groovy脚本。此外,我还有一个

Slack Notification Pluginv2.0.1和Groovy Postbuild Plugin。

我已成功发送消息build started 和构建完成(如果有的话)。

当某个构建步骤失败时 - 如何向Slack频道发送构建失败消息? p>

解决方案

你可以做这样的事情,并使用try catch块。

以下是一些示例代码:

 节点{
尝试{
notifyBuild('STARTED')

stage('Prepare code'){
echo'do checkout stuff'
}

stage('Testing'){
echo '测试'
echo'测试 - 发布覆盖结果'
}

stage('Staging'){
echo'Deploy Stage'
}

stage('Deploy'){
echo'Deploy - Backend'
echo'Deploy - Frontend'
}

} catch(e){
//如果抛出异常,构建失败
currentBuild.result =FAILED
throw e
} finally {
//成功或失败,总是发送通知
notifyBuild(currentBuild.result)
}
}
$ b $ def notifyBuild(String buildStatus ='STARTED'){
//建立null状态表示成功
buildStatus = buildStatus?:'SUCCESSFUL'

//默认值
def colorName ='RED'
def colorCode ='#FF0000'
def subject =$ {buildStatus}:作业'$ {env.JOB_NAME} [$ { env.BUILD_NUMBER}]'
def summary =$ {subject}($ {env.BUILD_URL})

//根据构建状态覆盖默认值
if (buildStatus =='STARTED'){
color ='YELLOW'
colorCode ='#FFFF00'
} else if(buildStatus =='SUCCESSFUL'){
color = '绿色'
colorCode ='#00FF00'
} else {
color ='RED'
colorCode ='#FF0000'
}

/ /发送通知
slackSend(color:colorCode,message:summary)
}

完整的代码片段可以在这里找到 Jenkinsfile模板


I have a pipeline groovy script in Jenkins v2.19. Also I have a
"Slack Notification Plugin" v2.0.1 and "Groovy Postbuild Plugin".

I have successfully send a message "build started" and "build finished" (if it had).

When some build step failed – how I can send a message "Build failed" to the Slack channel?

解决方案

You could do something like this and use a try catch block.

Here is some example Code:

node {
    try {
        notifyBuild('STARTED')

        stage('Prepare code') {
            echo 'do checkout stuff'
        }

        stage('Testing') {
            echo 'Testing'
            echo 'Testing - publish coverage results'
        }

        stage('Staging') {
            echo 'Deploy Stage'
        }

        stage('Deploy') {
            echo 'Deploy - Backend'
            echo 'Deploy - Frontend'
        }

  } catch (e) {
    // If there was an exception thrown, the build failed
    currentBuild.result = "FAILED"
    throw e
  } finally {
    // Success or failure, always send notifications
    notifyBuild(currentBuild.result)
  }
}

def notifyBuild(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'
  }

  // Send notifications
  slackSend (color: colorCode, message: summary)
}

Complete snippet can be found here Jenkinsfile Template

这篇关于Jenkins管道构建失败后如何发送Slack通知?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆