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

如何在Jenkins声明式管道中发送“恢复正常”通知?

史旺
2023-03-14
问题内容

我正在尝试将现有的Jenkins管道转换为新的声明性管道,我想知道如何正确处理邮件通知?

我目前正在使用此代码:

node {
   try {

      ...

      currentBuild.result = 'SUCCESS'
   } catch (any) {
       currentBuild.result = 'FAILURE'
       throw any
   } finally {
       step([$class: 'Mailer',
           notifyEveryUnstableBuild: true,
           recipients: "baptiste.wicht@gmail.com",
           sendToIndividuals: true])
   }
}

它运作良好,但我看不到如何使用新的声明性语法。我认为可以通过使用post()和其他通知来完成某些操作,但我不知道具体如何做。我已经试过了:

post {
    always {
        step([$class: 'Mailer',
            notifyEveryUnstableBuild: true,
            recipients: "baptiste.wicht@gmail.com",
            sendToIndividuals: true])
    }
}

但是问题在于它不会发送任何“返回正常”邮件。

我如何在Jenkins声明性管道中使用Mailer插件来发送“返回正常”邮件?

是否应该再次对所有声明性语法使用try / catch?


问题答案:

问题在于,在声明式的post部分中,currentBuild.result未设置为SUCCESS。虽然设置了FAILURE和ABORTED。因此,此刻的行为目前似乎不一致。

我改进了如何为Jenkins管道获得相同的Mailer行为以更好地处理这种情况的答案:

pipeline {
  agent any
  stages {
      stage('test') {
        steps {
            echo 'some steps'        
            // error("Throw exception for testing purpose..")
        }
      }
  }
  post {
      always {
          script {
              if (currentBuild.result == null) {
                  currentBuild.result = 'SUCCESS'    
              }
          }    
          step([$class: 'Mailer',
            notifyEveryUnstableBuild: true,
            recipients: "test@test.com",
            sendToIndividuals: true])
      }
  }
}


 类似资料:
  • 在Jenkins脚本管道中,您可以像这样设置PATH env变量: 注意这里解释的路径MAVENhttps://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-withenv代码集环境变量: 要设置的环境变量列表,每个变量的形式为VARIABLE=value或VARIABLE=以取消设置其他定义的变量。您还可以使用语法PATH wh

  • 我想在Jenkins声明性管道语法中定义多个阶段,它们可以在任何一个失败后继续。我找不到任何现存的真正重复的问题,因为它们都假定或允许脚本语法。 为了澄清,我不寻求如何在脚本语法中实现这一点。我试图理解这种流控制是否在声明性语法中得到支持和形式化。为此,我将尝试准确定义我要寻找的内容: < li >没有尝试/捕捉。我不想陷入脚本模式,或者将我的声明性管道“包装”在另一个共享库或脚本块中。 < li

  • 问题内容: Jenkins声明性管道中的参数可以动态吗? 我希望选择选项值在运行时由函数填充。以下代码确实生成了选项列表,但它们似乎过时了- 可能是在我第一次运行此代码时生成的。如果AMI列表更改,则选择将保持不变。我希望每次选择都运行此命令。 EDIT 我最终使用,带有扩展选择参数。目前它不支持该参数,因此我对其进行了修改https://review.openstack.org/#q,I0c6a

  • 我有几个不同repo的Jenkins声明性管道,它们触发数据库刷新,以及依赖于数据库的单元测试。这些Jenkins作业是从GitHub中的pull请求触发的。 为了避免资源冲突,我需要防止这些作业同时运行——无论是在每个项目内还是在各个项目之间。 “油门并发构建”插件似乎就是为此而构建的。 我已经安装了插件,并配置了如下类别: 我在Jenkins文件中添加了“throttle”选项,其中一个存储库

  • 我的存储库中有一个带有Jenkinsfile的多分支管道,我能够拥有我的CI工作流程(构建 为了设置我的夜间构建,我添加了 但是现在,如果我们只是在晚上构建由cron表达式触发的作业,如何执行分析步骤呢? 我的简化构建阶段如下所示:

  • 问题内容: 我正在使用jenkins管道(声明式synthax),并且想将提交推送到远程存储库。 有什么办法可以使用git插件来做到这一点吗?这是我目前正在尝试的方法: 但这不起作用。我收到以下错误: 有人可以帮忙吗?虽然问题出在密码中的特殊字符,但我不确定。 问题答案: 我们终于弄清楚了。问题很简单,我们在密码中包含特殊字符,这些特殊字符会破坏网址。 这是工作代码: