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

NPE exception on pipeline checkout step (Pipeline multibranch)

    • workflow-scm-step 2.10

      Multibranch pipeline jobs are failing on git checkout step with the latest versions of pipeline plugins.

      java.lang.NullPointerException at org.jenkinsci.plugins.workflow.job.WorkflowRun.onCheckout(WorkflowRun.java:836) at org.jenkinsci.plugins.workflow.job.WorkflowRun.access$1000(WorkflowRun.java:133) at org.jenkinsci.plugins.workflow.job.WorkflowRun$SCMListenerImpl.onCheckout(WorkflowRun.java:1101) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:133) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:91) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:78) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Finished: FAILURE
      

      Multibranch pipeline job does not fail with Pipeline: SCM Step 2.7 version, next versions (2.8, 2.9) leads to fails with NPE.

      This is an example of Jenkinsfile:

       

      pipeline {
        agent none
        options {
          timeout(time: 1, unit: 'HOURS')
          buildDiscarder(logRotator(numToKeepStr: '20'))
          disableConcurrentBuilds()
          timestamps()
        }
        stages {
          stage('Build and publish') {
            agent { label 'environment/qa && java/1.8' } 
            steps {
              git branch: 'test',
                  url: 'git@github.com:yourorganization/yourgit.git'
              sh 'echo test'
            }
          }
        }
      }
      

       

       

          [JENKINS-59560] NPE exception on pipeline checkout step (Pipeline multibranch)

          Devin Nusbaum added a comment -

          suiside I think this is related to JENKINS-57918, but in that case, it only affected the Repo SCM. I have not heard any other reports from Git users, so maybe there is something special about your case? What version of workflow-job are you running so we can see exactly what line in WorkflowRun is throwing the NPE?

          Feel free to try out https://github.com/jenkinsci/workflow-scm-step-plugin/pull/37 in your dev environment to see if it fixes the problem.

          Devin Nusbaum added a comment - suiside I think this is related to JENKINS-57918 , but in that case, it only affected the Repo SCM. I have not heard any other reports from Git users, so maybe there is something special about your case? What version of workflow-job are you running so we can see exactly what line in WorkflowRun is throwing the NPE? Feel free to try out https://github.com/jenkinsci/workflow-scm-step-plugin/pull/37 in your dev environment to see if it fixes the problem.

          Artem Gryshyn added a comment -

          dnusbaum tnx, your changes fixed NPE. I tested my case with multibranch pipeline and single pipeline, nothing has broken.

          Artem Gryshyn added a comment - dnusbaum tnx, your changes fixed NPE. I tested my case with multibranch pipeline and single pipeline, nothing has broken.

          Artem Gryshyn added a comment -

          dnusbaum I'm not sure I get you right, but if you mean Pipeline: Job - version is 2.35

          Artem Gryshyn added a comment - dnusbaum I'm not sure I get you right, but if you mean Pipeline: Job - version is 2.35

          Devin Nusbaum added a comment -

          suiside Yes, sorry, the artifact id of the plugin is workflow-job, but the name shown to users is Pipeline: Job Plugin. What is the GitHub plugin being configured in the attached screenshot (it doesn't look like GitHub Branch Source)? That plugin should probably be updated so that it writes an empty changelog file when there are no changes instead of leaving the changelog file empty for consistency with other SCMs.

          Devin Nusbaum added a comment - suiside Yes, sorry, the artifact id of the plugin is workflow-job, but the name shown to users is Pipeline: Job Plugin. What is the GitHub plugin being configured in the attached screenshot (it doesn't look like GitHub Branch Source)? That plugin should probably be updated so that it writes an empty changelog file when there are no changes instead of leaving the changelog file empty for consistency with other SCMs.

          Artem Gryshyn added a comment -

          dnusbaum this is a https://plugins.jenkins.io/github GitHub plugin, 1.29.4 version. Also used https://plugins.jenkins.io/git Git plugin, 3.12.1 version. 

          Git plugin was downgraded to 3.12.1 from 4.0.0 because of dependency on "Pipeline: SCM" plugin

          Artem Gryshyn added a comment - dnusbaum this is a  https://plugins.jenkins.io/github  GitHub plugin, 1.29.4 version. Also used  https://plugins.jenkins.io/git  Git plugin, 3.12.1 version.  Git plugin was downgraded to 3.12.1 from 4.0.0 because of dependency on "Pipeline: SCM" plugin

          Devin Nusbaum added a comment -

          It looks like the plugin shown in the screenshot is the GitHub Integration Plugin (https://plugins.jenkins.io/github-pullrequest), this config.jelly file in particular. Perhaps this is the problematic code in that plugin, it could return a parser that just doesn't do anything instead of null. My fix in workflow-scm-step should work fine for this particular issue though.

          Devin Nusbaum added a comment - It looks like the plugin shown in the screenshot is the GitHub Integration Plugin ( https://plugins.jenkins.io/github-pullrequest ), this config.jelly file in particular . Perhaps this  is the problematic code in that plugin, it could return a parser that just doesn't do anything instead of null. My fix in workflow-scm-step should work fine for this particular issue though.

          Artem Gryshyn added a comment - - edited

          dnusbaum yes, it really does. Since I built plugin with your fix, there are no more NPE exceptions. Interesting thing that NPE is only with multibranch pipeline, single pipeline is not affected. 

          Does your fix going to be implemented and issued with new version of plugin or I have to use my custom build?

          Artem Gryshyn added a comment - - edited dnusbaum yes, it really does. Since I built plugin with your fix, there are no more NPE exceptions. Interesting thing that NPE is only with multibranch pipeline, single pipeline is not affected.  Does your fix going to be implemented and issued with new version of plugin or I have to use my custom build?

          Devin Nusbaum added a comment -

          suiside I would like to add some automated tests before I merge the change, but I will try to get a release out with my fix in the next few weeks. 

          Devin Nusbaum added a comment - suiside I would like to add some automated tests before I merge the change, but I will try to get a release out with my fix in the next few weeks. 

          Devin Nusbaum added a comment -

          A fix for this issue was just release in Pipeline: SCM Step Plugin version 2.10.

          Devin Nusbaum added a comment - A fix for this issue was just release in Pipeline: SCM Step Plugin version 2.10.

            dnusbaum Devin Nusbaum
            suiside Artem Gryshyn
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: