How to clear workspace in Jenkins pipeline before job starts

Use the means of your VCS, with Git run

git clean -fdx

stage('Git') {
            steps {
                step([$class: 'WsCleanup'])
                checkout scm
            }
        }

the WsCleanup does the trick


Actually, I have to revise my answer based on recent changes to the pipeline plugins, e.g. GitHub Branch Source Plugin 2.2.0 with JENKINS-43507.

Besides the different branch discovery behaviours, which can be configured, one can now define additional steps to take, including Clean before checkout (and Clean after checkout):

enter image description here

The resulting output in the pipeline execution will then be

Cleaning workspace
  > git rev-parse --verify HEAD # timeout=10
Resetting working tree
 > git reset --hard # timeout=10
 > git clean -fdx # timeout=10

so, pretty close to the calling git clean yourself.