Mike3355
Mike3355

Reputation: 12101

Jenkins pipeline error - Unknown stage section "sh" and steps in a stage must be in a steps block

I had something almost identical to this and it worked fine and now I get the below errors. I have parallel, steps and stages all there.

Error:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 23: Unknown stage section "sh". Starting with version 0.5, steps in a stage must be in a steps block. @ line 23, column 7.
         stage('build api image') {
         ^

WorkflowScript: 26: Unknown stage section "sh". Starting with version 0.5, steps in a stage must be in a steps block. @ line 26, column 7.
         stage('build view image') {
         ^

WorkflowScript: 20: No "steps" or "parallel" to execute within stage "gradle test" @ line 20, column 7.
         stage('gradle test') {
         ^

WorkflowScript: 23: No "steps" or "parallel" to execute within stage "build api image" @ line 23, column 7.
         stage('build api image') {
         ^

WorkflowScript: 26: No "steps" or "parallel" to execute within stage "build view image" @ line 26, column 7.
         stage('build view image') {

pipeline {
    agent any

    stages {
      stage('run test cases in modules') {
            steps {
              parallel(
              "Gradle clean": {
                  sh "./gradlew clean"
               },
                "api-service-tests": {
                  sh "./gradlew api:test"
                },
                "cache-api-tests": {
                  sh "./gradlew view:test"
                }
              )
            }
      }
      stage('gradle test') {
            // sh "./gradlew --no-daemon test"
      }
      stage('build api image') {
            sh "oc start-build cms-api --from-dir=api/docker --follow"
      }
      stage('build view image') {
            sh "oc start-build  --from-dir=view --follow"
      }
    }

}

Upvotes: 9

Views: 7090

Answers (1)

mkobit
mkobit

Reputation: 47269

You are missing the steps directive inside of your other stage directives.

stage('gradle test') {
  // sh "./gradlew --no-daemon test"
}

Should be something more like:

stage('gradle test') {
  steps {
    sh "./gradlew --no-daemon test"
  }
}

Upvotes: 13

Related Questions