【问题标题】:How to retrieve build job status (success/error) for using in post-build steps in pipeline?如何检索构建作业状态(成功/错误)以用于管道中的构建后步骤?
【发布时间】:2018-03-26 17:25:19
【问题描述】:

在我通过管道在 Jenkins 上的构建作业中,我需要一个依赖于构建状态的构建后步骤。如果工作成功,则执行“此”。否则做'那个'。

如何使用管道检索构建作业状态并将其保存,例如在构建后步骤中使用它的环境变量中?

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    在管道顶部定义颜色(易于跟踪成功/失败) 并在阶段部分之后添加发布操作

    def COLOR_MAP = ['SUCCESS': 'good', 'FAILURE': 'danger', 'UNSTABLE': 'danger', 'ABORTED': 'danger']
    
    pipeline {
      agent any 
    
      options {
        ansiColor('xterm')
      }
    
      stages {
        stage("Build") {
        }
        stage("Deploy") {
        }
      } //end of stages
    
      post {
        always {
          slackSend (color: COLOR_MAP[currentBuild.currentResult], message: "Job: *${env.JOB_NAME}, build #${env.BUILD_NUMBER}* is *`${currentBuild.currentResult}`* \nRun in ${currentBuild.durationString} - <${env.BUILD_URL}|Go to this job>")
        }
      } 
    

    https://plugins.jenkins.io/slack 中配置松弛集成

    【讨论】:

      【解决方案2】:

      您可以使用 post 块根据构建状态执行操作,如下所示:

      post {
              success {
                  emailext ( 
                      subject: '${DEFAULT_SUBJECT}'+'SUCESSFUL', 
                      body: '${DEFAULT_CONTENT}',
                      to: '${EMAIL_RECIPIENTS}'
                      );
                      slackSend (color: 'good', message: ":csp_operational: ${env.JOB_NAME} - #${env.BUILD_NUMBER} Success (<${env.BUILD_URL}|Open>)");
      
      
              }
              failure {
                  emailext ( 
                      subject: '${DEFAULT_SUBJECT}'+'FAILED!', 
                      body: '${DEFAULT_CONTENT}',
                      to: '${EMAIL_RECIPIENTS}'
                      );
                      slackSend (color: 'danger', message: ":x: ${env.JOB_NAME} - #${env.BUILD_NUMBER} Failure (<${env.BUILD_URL}|Open>)");
      
      
              }
      
          }
      

      【讨论】:

      • 抑制:java.lang.NoSuchMethodError:在步骤 [AddInteractivePromotion、ArtifactoryGradleBuild、ArtifactoryMavenBuild、ConanAddRemote、 中找不到此类 DSL 方法“post”
      • 您需要在顶级管道块中添加post块。 jenkins.io/doc/book/pipeline/syntax/#post.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2018-07-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多