Search code examples
jenkinsgroovyjenkins-pipeline

How to fix Pipeline-Script "Expected a step" error


I am trying to run a simple pipeline-script in Jenkins with 2 stages. The script itself creates a textFile and checks if this one exists. But when i try to run the job I get an "Expected a step" error.

I have read somewhere that you cant have an if inside a step so that might be the problem but if so how can I check without using the if?

pipeline {
    agent {label 'Test'}
    stages {
        stage('Write') {
            steps {
                writeFile file: 'NewFile.txt', text: 
                '''Sample HEADLINE'''
                println "New File created..."
            }
        }
        stage('Check') {
            steps {        
                Boolean bool = fileExists 'NewFile.txt'
                if(bool) {
                    println "The File exists :)"
                }
                else {
                    println "The File does not exist :("
                }            
            }
        }
    }
}

I expect the script to create a "NewFile.txt" in the agents workspace and print a text to the console confirming that it exists.

But I actually get two "Expected a step" errors. At the Line starting with Boolean bool = ... and at if(bool) ...


Solution

  • You are missing a script{} -step which is required in a declarative pipeline.

    Quote:

    The script step takes a block of Scripted Pipeline and executes that in the Declarative Pipeline.

    stage('Check') {
        steps {        
            script {
                Boolean bool = fileExists 'NewFile.txt'
                if (bool) {
                    println "The File exists :)"
                } else {
                    println "The File does not exist :("
                }   
            }         
        }
    }