当前位置: 首页 > 面试题库 >

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

袁亦
2023-03-14
问题内容

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

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

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


问题答案:

您可以执行类似操作并使用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模板



 类似资料:
  • 问题内容: 我在管道詹金斯工作中使用以下步骤: 但是当构建失败(即错误)时,没有发送电子邮件。任何指针为什么? PS电子邮件可以从此服务器发送,我已经测试过了。 问题答案: 使用新语法使用声明性管道,例如: 您可以在詹金斯官方网站上找到更多信息: https://jenkins.io/doc/pipeline/tour/running-multiple- steps/ 请注意,这种新语法使您的管道

  • 我正在尝试从管道中自动创建Jenkins管道构建。 我有一个管道,它创建一个比特桶存储库并向其提交一些代码,包括一个Jenkinsfile。 我需要向此管道添加另一个步骤,然后为其创建管道生成,这将运行 Jenkinsfile 中的步骤。 我认为Jobs DSL应该能够处理这一点,但我找到的文档非常稀少,我仍然不完全确定是否有可能或如何做到这一点。 任何帮助都将不胜感激。我想生成的Pipeline

  • 我有一系列执行快速检查的阶段。我想完成所有这些,即使有失败。例如: 第二阶段失败,因此默认情况下第三阶段不执行。 通常这将是的工作,但我想在阶段视图中显示它们。在下面的模型中: 构建4显示了通常发生的情况。作业失败,因此不运行

  • Jenkins版本=2.19 Jenkins多分支管道插件版本=2.92 我有一个Jenkinsfile,其中有一些基于分支的条件阶段。 为了简洁起见,这是我的Jenkinsfile的修改版本: 我正在使用多分支管道插件。 它成功地检测并构建了我所有的分支。 我的问题是,所有构建报告为失败,即使我悬停每个阶段,它报告'成功'。 我附上了一张图片,显示了一个功能分支,其中我想要运行的两个阶段已经运行

  • ----maven-enforcer-plugin:1.0.1:enforce(default)@cli---添加ignore:org.eclipse.jetty.spdy.* ----maven-enforcer-plugin:1.0.1:enforce(enforce-bang-dependencies)@cli-- ---build-helper-maven-plugin:1.7:times

  • 问题内容: 我正在利用多分支管道工作流,在Jenkins中将并发构建的数量限制为特定数量,但是在docs或google中找不到任何好的方法。 一些文档说这可以在Jenkinsfile步骤中使用并发来完成,但是我在其他地方也读过,这是不推荐使用的方式。 似乎最近发布了一些用于限制并发通过的东西,但是我找不到它的文档,并且在遵循代码时遇到了麻烦。我唯一发现的PR显示以下内容: 但是我很难让它工作。 是