Декларативный синтаксис Jenkinsfile для условного шага после сборки

У меня есть Jenkinsfile для многоотраслевого конвейера, например:

pipeline {
    agent any
    stages {
        // ...
    }
    post { 
        failure { 
            mail to: '[email protected]',
                 subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
                 body: "Something is wrong with ${env.BUILD_URL}"
        }
    }
}

Я хочу отправлять электронную почту только в случае сбоев в основной ветке. Есть ли способ сделать почтовый шаг условным? Согласно документации директива when может использоваться только внутри stage.


person augurar    schedule 30.10.2018    source источник


Ответы (1)


как вы уже отметили, когда работает только внутри стадии. И только допустимые шаги могут использоваться внутри post условий. Вы по-прежнему можете использовать синтаксис сценария внутри блока сценария, и блоки сценария являются допустимым шагом. Таким образом, вы должны иметь возможность использовать if внутри блока скрипта для получения желаемого поведения.

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

см. JENKINS-52689

person John    schedule 30.10.2018
comment
Ранее ответили здесь - person John; 26.04.2019
comment
Я думаю, это означает, что вы не можете использовать декларативный синтаксис для условных шагов, что очень плохо. - person augurar; 13.11.2020