一尘不染

Jenkins管道构建失败后,如何发送Slack通知?

jenkins

我在Jenkins v2.19中有一个管道常规脚本。我也有一个
“ Slack Notification Plugin” v2.0.1和“ Groovy Postbuild Plugin”。

我已经成功发送了一条消息“构建已开始”和“构建已完成”(如果有的话)。

当某些构建步骤失败时,如何向Slack通道发送消息“ Build failed”?


阅读 427

收藏
2020-07-25

共1个答案

一尘不染

您可以执行类似操作并使用try catch块。

这是一些示例代码:

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)
}

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

2020-07-25