Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-57537

catchError - Expecting "class hudson.model.Result" for parameter "buildResult"

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Component/s: pipeline
    • Labels:
      None
    • Environment:
    • Similar Issues:
    • Released As:
      workflow-basic-steps 2.18

      Description

      Used pipeline:

      pipeline {
          agent any
          stages {
              stage('catch error') {
                  steps {
                      catchError(buildResult: 'SUCCESS') {
                          sh "exit 1"
                      }
                  }
              }
              stage('summary') {
                  steps {
                      echo "here comes the summary..."
                  }
              }
          }
      }
      

      Result:

      Running in Durability level: MAX_SURVIVABILITY
      org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
      WorkflowScript: 6: Expecting "class hudson.model.Result" for parameter "buildResult" but got "SUCCESS" of type class java.lang.String instead @ line 6, column 41.
               catchError(buildResult: 'SUCCESS')
                                       ^
      
      1 error
      
      	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
      	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
      	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
      	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
      	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
      	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
      	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
      	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
      	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:133)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:126)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:561)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:522)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
      	at hudson.model.ResourceController.execute(ResourceController.java:97)
      	at hudson.model.Executor.run(Executor.java:429)
      Finished: FAILURE
      

       

        Attachments

          Issue Links

            Activity

            Hide
            dnusbaum Devin Nusbaum added a comment -

            Thanks for filing a separate ticket! I was not able to reproduce this in a scripted Pipeline, but I spoke with Andrew Bayer about this today, and he thought that it might be possible this issue was specific to Declarative. My guess is that it has to do with the way that Result registers a custom converter via Stapler here rather than using normal data binding.

            Show
            dnusbaum Devin Nusbaum added a comment - Thanks for filing a separate ticket! I was not able to reproduce this in a scripted Pipeline, but I spoke with Andrew Bayer about this today, and he thought that it might be possible this issue was specific to Declarative. My guess is that it has to do with the way that Result registers a custom converter via Stapler here rather than using normal data binding.
            Hide
            twalter Torsten Walter added a comment -

            Thanks for looking into this. Is there anything I can help with?

            Show
            twalter Torsten Walter added a comment - Thanks for looking into this. Is there anything I can help with?
            Hide
            dnusbaum Devin Nusbaum added a comment -

            I was able to reproduce the issue and can confirm that this is specific to Declarative Pipelines. I am working on a PR to fix the issue: https://github.com/jenkinsci/workflow-basic-steps-plugin/pull/85.

            Show
            dnusbaum Devin Nusbaum added a comment - I was able to reproduce the issue and can confirm that this is specific to Declarative Pipelines. I am working on a PR to fix the issue: https://github.com/jenkinsci/workflow-basic-steps-plugin/pull/85 .
            Hide
            dnusbaum Devin Nusbaum added a comment - - edited

            A fix for this issue was just released in Pipeline Basic Steps Plugin version 2.18. Note that you must update Pipeline Groovy Plugin to version 2.70 along with this update.

            Show
            dnusbaum Devin Nusbaum added a comment - - edited A fix for this issue was just released in Pipeline Basic Steps Plugin version 2.18. Note that you must update Pipeline Groovy Plugin to version 2.70 along with this update.
            Hide
            andreimuresianu Andrei Muresianu added a comment - - edited

            Thank you for working on this Devin Nusbaum!

            Could you please let me know if my expectation is wrong? I tried running the following:

            pipeline {
                agent any
                stages {
                    stage('catch error') {
                        steps {
                            catchError(stageResult: 'UNSTABLE') {
                                sh "exit 1"
                            }
                        }
                    }
                    stage('summary') {
                        steps {
                            echo "here comes the summary..."
                        }
                    }
                }
            } 

            And I expected the first stage to turn yellow instead it stayed green.

            I can confirm that I am running:

            Pipeline Basic Steps 2.17 and Pipeline Groovy: 2.70

            Show
            andreimuresianu Andrei Muresianu added a comment - - edited Thank you for working on this  Devin Nusbaum ! Could you please let me know if my expectation is wrong? I tried running the following: pipeline { agent any stages { stage( ' catch error' ) { steps { catchError(stageResult: 'UNSTABLE' ) { sh "exit 1" } } } stage( 'summary' ) { steps { echo "here comes the summary..." } } } } And I expected the first stage to turn yellow instead it stayed green. I can confirm that I am running: Pipeline Basic Steps 2.17 and Pipeline Groovy: 2.70
            Hide
            dnusbaum Devin Nusbaum added a comment -

            Andrei Muresianu Yes, it should turn yellow in your example. I think that JENKINS-57579 is that problem, and we are waiting on a Blue Ocean fix to be merged and released to fix it. (In some cases, things work without the fix, but I think sequential stages are problematic.)

            Show
            dnusbaum Devin Nusbaum added a comment - Andrei Muresianu  Yes, it should turn yellow in your example. I think that  JENKINS-57579 is that problem, and we are waiting on a Blue Ocean fix to be merged and released to fix it. (In some cases, things work without the fix, but I think sequential stages are problematic.)
            Hide
            wamcubs Andrew Mullens added a comment -

            Hello, Did anyone ever solve this issue for Declarative pipeline? The catchError still give the same error.

            Show
            wamcubs Andrew Mullens added a comment - Hello, Did anyone ever solve this issue for Declarative pipeline? The catchError still give the same error.
            Hide
            dnusbaum Devin Nusbaum added a comment -

            Andrew Mullens Yes, this issue is fixed, see this comment. Make sure you are passing a String to catchError and not an object of type Result. If that still isn't working for you, please post an extract from your Jenkinsfile showing how you are using catchError.

            Show
            dnusbaum Devin Nusbaum added a comment - Andrew Mullens Yes, this issue is fixed, see this comment . Make sure you are passing a String to catchError and not an object of type Result . If that still isn't working for you, please post an extract from your Jenkinsfile showing how you are using catchError .

              People

              • Assignee:
                dnusbaum Devin Nusbaum
                Reporter:
                twalter Torsten Walter
              • Votes:
                1 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: