首页 > 解决方案 > 用于条件构建后步骤的 Jenkinsfile 声明性语法

问题描述

我有一个用于多分支管道的 Jenkinsfile,如下所示:

pipeline {
    agent any
    stages {
        // ...
    }
    post { 
        failure { 
            mail to: 'team@example.com',
                 subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
                 body: "Something is wrong with ${env.BUILD_URL}"
        }
    }
}

我只想为主分支上的故障发送电子邮件。有没有办法使邮件步骤有条件?根据文档,when指令只能在stage.

标签: jenkinsjenkins-pipelinejenkins-declarative-pipeline

解决方案


就像您在仅在舞台内工作所指出的那样。并且只有有效的step可以在后置条件中使用。您仍然可以在脚本块内使用脚本语法,并且脚本块是有效的步骤。因此,您应该能够在脚本块内使用if来获得所需的行为。

...
  post {
    failure {
      script {
        if (env.BRANCH_NAME == 'master') {
          ... # your code here
        }
      }
    }
  }
}

JENKINS-52689


推荐阅读