条件 post-构建步骤的 Jenkinsfile 声明语法

Jenkinsfile declarative syntax for conditional post-build step

我有一个用于多分支管道的 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.

中使用

正如您所注意到的, 仅在 阶段 内工作时。并且在 post 条件 中只能使用有效的 steps。 您仍然可以在 script 块中使用 scripted syntax,并且 script 块是有效的 步骤。因此,您应该能够在 script 块中使用 if 以获得所需的行为。

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

JENKINS-52689