jenkins-pipeline

post equivalent in scripted pipeline?


What is the syntax of 'post' in scripted pipeline comparing to declarative pipeline? https://jenkins.io/doc/book/pipeline/syntax/#post


Solution

  • For scripted pipeline, everything must be written programmatically and most of the work is done in the finally block:

    Jenkinsfile (Scripted Pipeline):

    node {
        try {
            stage('Test') {
                sh 'echo "Fail!"; exit 1'
            }
            echo 'This will run only if successful'
        } catch (e) {
            echo 'This will run only if failed'
    
            // Since we're catching the exception in order to report on it,
            // we need to re-throw it, to ensure that the build is marked as failed
            throw e
        } finally {
            def currentResult = currentBuild.result ?: 'SUCCESS'
            if (currentResult == 'UNSTABLE') {
                echo 'This will run only if the run was marked as unstable'
            }
    
            def previousResult = currentBuild.getPreviousBuild()?.result
            if (previousResult != null && previousResult != currentResult) {
                echo 'This will run only if the state of the Pipeline has changed'
                echo 'For example, if the Pipeline was previously failing but is now successful'
            }
    
            echo 'This will always run'
        }
    }
    

    https://jenkins.io/doc/pipeline/tour/running-multiple-steps/#finishing-up