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

If the job is parameterized but there are no parameters defined it causes all builds to fail

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Jenkins 1.637 introduced a problem related to parameterized builds. This problem has impact in multiple situations, as I am going to describe next.

      Jenkins 1.637 introduced the "OptionalJobProperty" class. Please see this commit: https://github.com/jenkinsci/jenkins/commit/53c86ec857a49609613ed1871a01830d51a89265

      Job configuration

      Follow the following steps:

      • Create a new job "Job1"
      • Activate the option "This build is parameterized"
      • Don't add any parameter
      • Save the job
      • Get back to the job configuration

      Previous to this version, you would see that Jenkins was "smart" enough to understand that it makes no sense to have a parameterized job without parameters, so it wouldn't save this option.

      After this version, the "This build is parameterized" option is active (and actually saved to the config.xml file) without any parameter. See the attached image "1".

      The config.xml file contains the following content.

      <properties>
          <hudson.model.ParametersDefinitionProperty/>
        </properties>

      Downstream job trigger

      Follow these steps:

      • Install the "Parameterized Trigger Plugin"
      • Add a new job "Job0". Add a downstream job "Job1", and pass the current build parameters.
      • Trigger "Job0", and wait for it to trigger "Job1"

      Result

      • Before Jenkins 1.637, the job is triggered with no problems.
      • After Jenkins 1.637, Job1 won't be triggered.
        This appears in Console Output.

      ERROR: Failed to build parameters to trigger project: Job1
      java.lang.NullPointerException
      at hudson.plugins.parameterizedtrigger.ProjectSpecificParameterValuesActionTransform.getParameterDefinitionsMap(ProjectSpecificParameterValuesActionTransform.java:47)
      at hudson.plugins.parameterizedtrigger.ProjectSpecificParameterValuesActionTransform.transformParametersAction(ProjectSpecificParameterValuesActionTransform.java:29)
      at hudson.plugins.parameterizedtrigger.ProjectSpecificParametersActionFactory.getProjectSpecificBuildActions(ProjectSpecificParametersActionFactory.java:32)
      at hudson.plugins.parameterizedtrigger.BuildTriggerConfig.getBuildActions(BuildTriggerConfig.java:290)
      at hudson.plugins.parameterizedtrigger.ParameterizedDependency.shouldTriggerBuild(ParameterizedDependency.java:60)
      at hudson.tasks.BuildTrigger.execute(BuildTrigger.java:245)
      at hudson.model.AbstractBuild$AbstractBuildExecution.cleanUp(AbstractBuild.java:684)
      at hudson.model.Build$BuildExecution.cleanUp(Build.java:200)
      at hudson.model.Run.execute(Run.java:1785)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      at hudson.model.ResourceController.execute(ResourceController.java:98)
      at hudson.model.Executor.run(Executor.java:410)
      Finished: SUCCESS

      This is not a major problem because there a workaround.

        Attachments

          Issue Links

            Activity

            Hide
            atcarmo André Carmo added a comment - - edited

            This could be seen as a problem of both Jenkins-core and the parameterized trigger plugin.

            I am going to submit a pull request for Jenkins-core, and I will also submit a pull request to the parameterized trigger plugin, in order to increase the possibility of fixing the problem (ideally it would require to upgrade both Jenkins AND the Parameterized Trigger Plugin, but upgrading just one of them will solve part of the problem, which is better than nothing). I will treat the problem on the plugin side on another JIRA issue.

            Show
            atcarmo André Carmo added a comment - - edited This could be seen as a problem of both Jenkins-core and the parameterized trigger plugin. I am going to submit a pull request for Jenkins-core, and I will also submit a pull request to the parameterized trigger plugin, in order to increase the possibility of fixing the problem (ideally it would require to upgrade both Jenkins AND the Parameterized Trigger Plugin, but upgrading just one of them will solve part of the problem, which is better than nothing). I will treat the problem on the plugin side on another JIRA issue.
            Hide
            tsboj17 Roland Lukacs added a comment -

            Is there any update about this bug?

            Show
            tsboj17 Roland Lukacs added a comment - Is there any update about this bug?
            Hide
            danielbeck Daniel Beck added a comment -

            Jesse Glick Any idea how to deal with this in OptionalJobProperty?

            Show
            danielbeck Daniel Beck added a comment - Jesse Glick Any idea how to deal with this in OptionalJobProperty ?
            Hide
            jglick Jesse Glick added a comment -

            We would need to override ParametersDefinitionProperty.DescriptorImpl.newInstance to return null in case the super return value had parameterDefinitions.isEmpty().

            That said, the NPE from ProjectSpecificParameterValuesActionTransform.getParameterDefinitionsMap seems like a bug in that plugin. Nowhere (that I can see) is it guaranteed that the parameter list is nonempty; the traditional UI just did not create that situation.

            Show
            jglick Jesse Glick added a comment - We would need to override ParametersDefinitionProperty.DescriptorImpl.newInstance to return null in case the super return value had parameterDefinitions.isEmpty() . That said, the NPE from ProjectSpecificParameterValuesActionTransform.getParameterDefinitionsMap seems like a bug in that plugin. Nowhere (that I can see) is it guaranteed that the parameter list is nonempty; the traditional UI just did not create that situation.
            Hide
            jupiter2005ster Balint Szigeti added a comment -

            is there any news regarding this bug?

            Show
            jupiter2005ster Balint Szigeti added a comment - is there any news regarding this bug?
            Hide
            jglick Jesse Glick added a comment -

            Reclassifying this for the plugin bug.

            Show
            jglick Jesse Glick added a comment - Reclassifying this for the plugin bug.

              People

              Assignee:
              huybrechts huybrechts
              Reporter:
              atcarmo André Carmo
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated: