jenkins (declarative) pipeline post action 'success' before 'always'?

Viewed 13411

Is it possible to do "success" post build before "always" ?

For exemple, if I do that :

post {
    success{
        archiveArtifacts artifacts: 'server/target/*.jar'
        deleteDir ()
    }
    always{
        deleteDir()
    }

}

In console Output it's done upside down...

" [Pipeline] deleteDir

[Pipeline] archiveArtifacts Archiving artifacts "

To bypass that, I use :

success{
        archiveArtifacts artifacts: 'server/target/*.jar'
        deleteDir ()
    }
    failure{
        deleteDir()
    }
    aborted{
        deleteDir()
    }
}
2 Answers

You can use cleanup stage.

Example: https://github.com/jenkinsci/pipeline-model-definition-plugin/blob/83abd0ec35960c1f2a37b6a66b2d26385b2962e2/pipeline-model-definition/src/test/resources/postChecksAllConditions.groovy

pipeline {
    agent none
    stages {
        stage("foo") {
            steps {
                echo "hello"
            }
        }
    }
    post {
        always {
            error "I AM FAILING NOW"
        }
        success {
            echo "MOST DEFINITELY FINISHED"
        }
        failure {
            echo "I FAILED"
        }
        cleanup {
            echo "I RAN ANYWAY"
        }
    }
}

PR: https://github.com/jenkinsci/pipeline-model-definition-plugin/commit/83abd0ec35960c1f2a37b6a66b2d26385b2962e2#diff-136d8ce8670181449534f5b993a87051

Related