Ошибка выполнения кода при сбое после конвейера - PullRequest
1 голос
/ 16 октября 2019

Я строю конвейер, используя скриптовый конвейер, и, как я вижу из https://jenkins.io/doc/pipeline/tour/post/, для декларативного конвейера, мы можем использовать действия post.

Аналогично я пытался в декларативном конвейере -

node {
        stage("Stage 1") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 1"
                }
        }
        stage("Stage 2") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 2"
                    error "failed for some reason."
                }
        }
        stage("Stage 3") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 3"
                }
    }
    post {
        failure {
            echo "Failed stage name: ${FAILED_STAGE}"
        }
    }
}

Но я не вижу сбой блока сообщения, выполненного даже при сбое конвейера. Не могли бы вы помочь понять, имеет ли он какой-то другой синтаксис для скриптового конвейера?

1 Ответ

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

Вы используете scripted pipeline, а не declarative pipeline (см. Разницу здесь ). Синтаксис совершенно другой, поэтому вы не можете использовать post-stage (существующий для декларативного конвейера) в scripted pipeline (как ваш конвейер).

У вас есть два варианта здесь.

  1. Вы конвертируете scripted pipeline в declarative pipeline (см. Синтаксис здесь ) и просто используете post-stage, как он использовался в вашем квесте. (Я бы предпочел этот вариант)

или

Реализуйте post-stage для вашего scripted pipeline самостоятельно в finally-block (см. этот ТАК вопрос о помощи)
...