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

Fail to generate correct input step with choice param syntax from snippet generator

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Duplicate
    • Component/s: pipeline
    • Labels:
      None
    • Similar Issues:

      Description

      Snippet generator generates this for input step with choice parameters:

      input message: '', parameters: [[$class: 'ChoiceParameterDefinition', choices: ['option1', 'option2'], description: '', name: 'My param']]
      

      That code tries to use the @DataboundConstructor of ChoiceParameterDefinition which does not match with the required signature, thus this warning stack trace is shown on snippet generation time:

      May 04, 2016 10:25:46 AM org.jenkinsci.plugins.structs.describable.DescribableModel uninstantiate
      WARNING: Cannot create control version of class hudson.model.ChoiceParameterDefinition using {choices=[option1, option2], description=, name=select}
      java.lang.ClassCastException: hudson.model.ChoiceParameterDefinition.choices expects class java.lang.String but received class java.util.Arrays$ArrayList
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:317)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:248)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:192)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate(DescribableModel.java:440)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate_(DescribableModel.java:466)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.uncoerce(DescribableParameter.java:164)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.uncoerce(DescribableParameter.java:158)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.inspect(DescribableParameter.java:112)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate(DescribableModel.java:426)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate_(DescribableModel.java:466)
      	at org.jenkinsci.plugins.workflow.steps.StepDescriptor.defineArguments(StepDescriptor.java:114)
      	at org.jenkinsci.plugins.workflow.cps.Snippetizer.object2Groovy(Snippetizer.java:68)
      	at org.jenkinsci.plugins.workflow.cps.Snippetizer.doGenerateSnippet(Snippetizer.java:218)
      

      The generated snippet does not work later on runtime, throwing the same exception.

        Attachments

          Issue Links

            Activity

            Hide
            amuniz Antonio Muñiz added a comment -

            Workaround: use this instead of the snippet generation code.

            choice = new ChoiceParameterDefinition('Param name', ['option1', 'option2'] as String[], 'Description')
            input message: 'Select one', parameters: [choice]
            
            Show
            amuniz Antonio Muñiz added a comment - Workaround: use this instead of the snippet generation code. choice = new ChoiceParameterDefinition( 'Param name' , [ 'option1' , 'option2' ] as String [], 'Description' ) input message: 'Select one' , parameters: [choice]
            Hide
            hrmpw Patrick Wolf added a comment - - edited

            I think this is a duplicate ticket that was already filed. Do you know the original ticket on this Daniel Beck?

            Is this the same issue?
            https://issues.jenkins-ci.org/browse/JENKINS-29711

            Show
            hrmpw Patrick Wolf added a comment - - edited I think this is a duplicate ticket that was already filed. Do you know the original ticket on this Daniel Beck ? Is this the same issue? https://issues.jenkins-ci.org/browse/JENKINS-29711
            Hide
            amuniz Antonio Muñiz added a comment -

            Patrick Wolf I don't think so. This one is about the snippet generator picking up a wrong constructor.

            Show
            amuniz Antonio Muñiz added a comment - Patrick Wolf I don't think so. This one is about the snippet generator picking up a wrong constructor.
            Hide
            danielbeck Daniel Beck added a comment -

            Patrick Wolf No, this one is specific to the ChoiceParameterDefinition type and inconsistency in its definition. Looks more like JENKINS-26143.

            Show
            danielbeck Daniel Beck added a comment - Patrick Wolf No, this one is specific to the ChoiceParameterDefinition type and inconsistency in its definition. Looks more like JENKINS-26143 .
            Hide
            amuniz Antonio Muñiz added a comment -

            Right, duplicated.

            Show
            amuniz Antonio Muñiz added a comment - Right, duplicated.
            Hide
            gaeste Gael Stehagen added a comment -

            In case people are coming here as I did. I resolved it with using default snippet from current generator, but instead of the created array, I used the string option with inline line breaks. Otherwise I had to get the 'new ChoiceParameterDefinition(...)' method whitelisted.

            So I ended up with:
            ...

            choice(choices: "option1\noption2\noption3\n", description: 'delimiters within string', name: 'my param'),
            
            Show
            gaeste Gael Stehagen added a comment - In case people are coming here as I did. I resolved it with using default snippet from current generator, but instead of the created array, I used the string option with inline line breaks. Otherwise I had to get the 'new ChoiceParameterDefinition(...)' method whitelisted. So I ended up with: ... choice(choices: "option1\noption2\noption3\n" , description: 'delimiters within string' , name: 'my param' ),
            Hide
            nicolas_brosse BROSSE Nicolas added a comment -

            Thank you it works

            However, the pipeline syntax does not generate the correct syntax.

            My version of jenkins is 2.41

            Show
            nicolas_brosse BROSSE Nicolas added a comment - Thank you it works However, the pipeline syntax does not generate the correct syntax. My version of jenkins is 2.41
            Hide
            danielbeck Daniel Beck added a comment -

            BROSSE Nicolas Unclear what you're saying. Note that this is resolved as duplicate of another issue, so it is known that the snippet generator is wrong.

            Show
            danielbeck Daniel Beck added a comment - BROSSE Nicolas Unclear what you're saying. Note that this is resolved as duplicate of another issue, so it is known that the snippet generator is wrong.

              People

              • Assignee:
                jglick Jesse Glick
                Reporter:
                amuniz Antonio Muñiz
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: