Conditional step/stage in Jenkins pipeline

Doing the same in declarative pipeline syntax, below are few examples:

stage('master-branch-stuff') {
    when {
        branch 'master'
    }
    steps {
        echo 'run this stage - ony if the branch = master branch'
    }
}

stage('feature-branch-stuff') {
    when {
        branch 'feature/*'
    }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}

stage('expression-branch') {
    when {
        expression {
            return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}

stage('env-specific-stuff') {
    when { 
        environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

More effective ways coming up –
https://issues.jenkins-ci.org/browse/JENKINS-41187

Also look at –
https://jenkins.io/doc/book/pipeline/syntax/#when


The directive beforeAgent true can be set to avoid spinning up an agent to run the conditional, if the conditional doesn’t require git state to decide whether to run:

when { beforeAgent true; expression { return isStageConfigured(config) } }

Release post and docs


UPDATE
New WHEN Clause
REF: https://jenkins.io/blog/2018/04/09/whats-in-declarative

equals – Compares two values – strings, variables, numbers, booleans –
and returns true if they’re equal. I’m honestly not sure how we missed
adding this earlier! You can do “not equals” comparisons using the not
{ equals … } combination too.

changeRequest – In its simplest form, this will return true if this
Pipeline is building a change request, such as a GitHub pull request.
You can also do more detailed checks against the change request,
allowing you to ask “is this a change request against the master
branch?” and much more.

buildingTag – A simple condition that just checks if the Pipeline is
running against a tag in SCM, rather than a branch or a specific
commit reference.

tag – A more detailed equivalent of buildingTag, allowing you to check
against the tag name itself.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)