Как запустить элемент post -> fail в декларативном конвейере в Jenkinsfile только условно? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть декларативный конвейер, так как я хотел бы определить глобальный post -> failure элемент, который выполняется только в определенных ветвях. Он должен быть выполнен после всех этапов, чтобы зафиксировать любой сбой в конвейере. Я хочу использовать импортированные методы (например, из других скриптов groovy), то есть вместо команды echo, показанной в примере.

Моя цель - создать уведомление, которое происходит только в определенном наборе ветвей итолько в случае сбоя какой-либо стадии в конвейере.

pipeline {
    agent any
    stages {
        stage('Compile') {
            steps {
                ...
            }
        }
        /* ... other stages ... */
    }
    post {
        success {
            echo 'whole pipeline successful'
        }
        failure {
            echo 'pipeline failed, at least one step failed'
        }
    }
}

post должен содержать шаг , как и steps, однако шаги - это команды afaik (ищетсяодин час и не нашел определения) и это означает, что я не могу использовать when или вложенные шаги (это возможно - я искал также часы).

Я не могу подойти к этомус линтером, потому что все они ограничены проверками синтаксиса и не проверяют логику конвейера. Я пробовал URL-адрес /pipeline-model-converter/validate, который является болезненным, потому что его нельзя использовать изнутри веб-интерфейса, а в почтальоне вам нужно подходить к аутентификации OAuth методом проб и ошибок. Нет даже изображения Docker для проверки.

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете использовать блок script внутри блока post для выполнения операторов Groovy. Например:

post {
    failure {
        script {
            if (env.GIT_BRANCH == 'dev') {
                echo 'pipeline failed'
                // email...
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...