I am getting java.lang.NullPointerException on Jenkisn while calling method from groovy script

Subrata Sarkar :

I am trying to call a method of the groovy script from Jenkins pipeline script and in that, I am getting java.lang.NullPointerException: Cannot invoke method getBuildsByDomain() on null object.

below is my Jenkins script

        pipeline{
          agent any
          environment{
              def EARLIESTDATE = '0'
              def LATESTDATE = '0'
            }
          parameters{
              string(defaultValue: "", description: 'Mention the Jenkins Directory. Like Dev/testforlder or DEV', name: 'JENKINS_DIRECTORY')
              string(defaultValue: "0", description: 'Enter the earliest date. Format: MM/dd/yyyy', name: 'EARLIEST_DATE')
              string(defaultValue: "0", description: 'Enter the earliest date. Format: MM/dd/yyyy', name: 'LATEST_DATE')
            }
            stages{
              stage("Getting Build Details"){
                steps{
                  script{
                    def rootDir = pwd()
                    echo "LOG-->INFO-->Current Working Directory : ${rootDir}"
                    echo "LOG-->INFO-->JENKINS DIRECTORY : ${params.JENKINS_DIRECTORY}"
                    echo "LOG-->INFO-->EARLIEST DATE : ${params.EARLIEST_DATE}"
                    echo "LOG-->INFO-->LATEST DATE : ${params.LATEST_DATE}"
                    def  FILES_LIST = sh (script: "ls   '${rootDir}'", returnStdout: true).trim()
                    //DEBUG
                    echo "FILES_LIST : ${FILES_LIST}"

                    def buildDetails = load "${rootDir}/getJobDetails.groovy"
                    echo "Script: ${buildDetails}"
                    buildDetails.getBuildsByDomain(params.JENKINS_DIRECTORY, params.EARLIEST_DATE, params.LATEST_DATE)
                  }
                }
              }
            }
            post{
              always {
                cleanWs()
              }
            }
        }

and the groovy script /getJobDetails.groovy

        import com.cloudbees.hudson.plugins.folder.Folder
        import jenkins.model.Jenkins
        import java.text.SimpleDateFormat
        import groovy.time.TimeCategory

        /*test=''
        getBuildsByDomain('DEV',test,test)*/

        def getBuildsByDomain(JENKINSDIR,EARLIEST_DATE, LATEST_DATE){
            def buildsByDomain = new Dictionary()

            def jenkinsDir = Jenkins.instance.getItemByFullName(JENKINSDIR)
            echo "LOG-->INFO-->Directory to Check: ${jenkinsDir.getFullName()}"
            def folderObj = getFolders(jenkinsDir)
            //println "Folders to Check: ${folderObj}"

            folderObj.each{ folder ->
                //println "Folder: ${folder.name}"
                def jobObj = getJobs(folder)
                def totatBuilds = []
                //println "Job List: ${jobObj}"
                jobObj.each{job ->
                    def builds = []
                    builds = processJob(job,EARLIEST_DATE, LATEST_DATE)
                    totatBuilds = [totatBuilds, builds].flatten().findAll{it}
                    //println builds
                }
            buildsByDomain.put(folder.name,totatBuilds.size())
            //println "Total Builds: ${totatBuilds}"
            //println "Total Builds Count: ${buildCount = totatBuilds.size()}"
            }
            echo "LOG-->INFO-->Build Details By Domain: ${buildsByDomain}"
            //return buildsByDomain
        }

        def processJob(Item job,EARLIEST_DATE, LATEST_DATE){
            Date earliestDate = EARLIEST_DATE != '0' ? Date.parse('MM/dd/yyyy',EARLIEST_DATE): new Date() -7
            Date latestDate = LATEST_DATE != '0' ? Date.parse('MM/dd/yyyy', LATEST_DATE) : new Date()
            def buildnum = []
            if(job.getLastBuild() != null){
                //println job.name
                job.builds.each{
                    if (it.getTime().compareTo(earliestDate) == 1 && it.getTime().compareTo(latestDate) == -1 ){
                        buildnum.add(it.displayName[1..-1])
                    }
                }
                return buildnum
            }
        }

        def getJobs(Item folder){
            def jobs = []
            folder.getItems().each{
                if(it instanceof com.cloudbees.hudson.plugins.folder.AbstractFolder){
                    getJobs(it)
                }else{
                    jobs.add(it)
                }
            }
          return jobs
        }

        def getFolders(Item directory){
            def folders = []
            directory.getItems().each{
                if(it instanceof com.cloudbees.hudson.plugins.folder.Folder){
                    folders.add(it)
                }
            }
            return folders
        }


        class Dictionary{
            def key
            def value
            def dict = [:]
            // Empty No-arg constructor. Required for the overloaded constructor below
            Dictionary() {}

            // A two-arg constructor to facilitate an entry to be added during instantiation
            Dictionary(key, value) {
            put(key,value)
            }

            // Method to validate the key, value inputs for not-null
            def validate(key, value){
                if(key==null)
                    throw new RuntimeException("groovy-log: Null key is not permitted")
                if(value==null)
                    throw new RuntimeException("groovy-log: Null value is not permitted")
            }

            // Actual method to store the key-value pairs.
            // Exception message printed if any of them is null.
            def put(key, value) {
                try {
                    validate(key,value)
                    this.dict[key]=value
                    printInfo()
                } catch(Exception exception) {
                    println "  #### ERROR #### --> " + exception.getMessage()
                    println " "
                }
            }

            // Overridden toString() to have a meaningful display
            String toString() {
                "Builds Count By Domain : ${dict}"
            }
        }

while runing it I with parameter I am getting below console output

            Commit message: "10.02"
            [Pipeline] }
            [Pipeline] // stage
            [Pipeline] withEnv
            [Pipeline] {
            [Pipeline] withEnv
            [Pipeline] {
            [Pipeline] stage
            [Pipeline] { (Getting Build Details)
            [Pipeline] script
            [Pipeline] {
            [Pipeline] pwd
            [Pipeline] echo
            LOG-->INFO-->Current Working Directory : /home/jenkins_agent/jenkins/workspace/Internal Jobs/JenkinsTools/Get_Jenkins_Metrics
            [Pipeline] echo
            LOG-->INFO-->JENKINS DIRECTORY : Dev
            [Pipeline] echo
            LOG-->INFO-->EARLIEST DATE : 0
            [Pipeline] echo
            LOG-->INFO-->LATEST DATE : 0
            [Pipeline] sh
             > git rev-list --no-walk 05d56d2022241f4c883709efb315a41a3d7fd330 # timeout=10
            + ls '/home/jenkins_agent/jenkins/workspace/Internal Jobs/JenkinsTools/Get_Jenkins_Metrics'
            [Pipeline] echo
            FILES_LIST : Achived
            getJobDetails.groovy
            main.jf
            [Pipeline] load
            [Pipeline] { (/home/jenkins_agent/jenkins/workspace/Internal Jobs/JenkinsTools/Get_Jenkins_Metrics/getJobDetails.groovy)
            [Pipeline] }
            [Pipeline] // load
            [Pipeline] echo
            Script: null
            [Pipeline] }
            [Pipeline] // script
            [Pipeline] }
            [Pipeline] // stage
            [Pipeline] stage
            [Pipeline] { (Declarative: Post Actions)
            [Pipeline] cleanWs
            [WS-CLEANUP] Deleting project workspace...
            [WS-CLEANUP] Deferred wipeout is used...
            [WS-CLEANUP] done
            [Pipeline] }
            [Pipeline] // stage
            [Pipeline] }
            [Pipeline] // withEnv
            [Pipeline] }
            [Pipeline] // withEnv
            [Pipeline] }
            [Pipeline] // node
            [Pipeline] End of Pipeline
            java.lang.NullPointerException: Cannot invoke method getBuildsByDomain() on null object
                at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
                at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
                at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
                at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:158)
                at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:160)
                at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
                at WorkflowScript.run(WorkflowScript:27)
                at ___cps.transform___(Native Method)
                at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
                at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
                at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
                at sun.reflect.GeneratedMethodAccessor210.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
                at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:76)
                at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
                at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
                at sun.reflect.GeneratedMethodAccessor469.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
                at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
                at com.cloudbees.groovy.cps.Next.step(Next.java:83)
                at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
                at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
                at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129)
                at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268)
                at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
                at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
                at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59)
                at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:237)
                at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58)
                at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:182)
                at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332)
                at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)
                at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)
                at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)
                at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
                at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
                at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
                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

I am not bale to figure out what mistake i am doing. Please help me out to debug this.

daggett :

The only place where you call getBuildsByDomain

buildDetails.getBuildsByDomain(params.JENKINS_DIRECTORY...

Means that buildDetails is null

You are getting buildDetails by loading getJobDetails.groovy

But getJobDetails.groovy script returns nothing.

Normally you should end it with return this

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Getting java.lang.NullPointerException while calling activate method on TaskClient

From Dev

i am getting a java.lang.NullPointerException while executing the testng script

From Dev

In groovy getting java.lang.NullPointerException while JSONPATH lookup

From Dev

Why am I getting this "java.lang.NullPointerException: Attempt to invoke virtual method '…' on a null object reference" error?

From Java

Getting java.lang.NullPointerException when calling Method.invoke

From Dev

Error java.lang.NullPointerException while calling class method

From Dev

Why I am getting java.lang.NullPointerException?

From Dev

why I am getting : java.lang.NullPointerException?

From Dev

Calling groovy method from script

From Dev

java.lang.NullPointerException error while accessing method from array

From Dev

I am getting NullpointerException at the time of pressing a button (on Search Button)java.lang.NullPointerException

From Dev

NullPointerException while calling a method from service

From Dev

I am calling userDao.findById(Integer i) and is giving java.lang.NullPointerException i am giving the exact id that is in db

From Dev

Why am I getting a java.lang.NullPointerException error when I try to switch activities in studio?

From Dev

I am getting java.lang.OutOfMemoryError from String manipulation

From Dev

why am i getting a NullPointerException Java

From Dev

Why am I getting a nullPointerException in Java?

From Dev

i am getting java.lang.NullPointerException when trying to check internetConnection?

From Dev

I am getting error java.lang.NullPointerException when insert element in Vector

From Dev

I am getting a java.lang.NullPointerException when using Apache POI

From Dev

Vue.js- I am getting "this.cancelOrderFunction is not a function" error while calling method inside a child component

From Dev

java.lang.StackOverflowError while calling a method

From Dev

Jenkins pipeline: java.lang.NoSuchMethodError: No such DSL method, while executing shell script inside groovy

From Dev

Mockito : java.lang.NullPointerException when calling method from mocked Class

From Dev

I am new to Groovy, I am running below Groovy Script. But here my objects are getting overridden

From Dev

java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference while getting instance of other class and method

From Dev

Why Am I getting "Exception in thread "main" java.lang.StackOverflowError" in recursive java method?

From Dev

Getting NullPointerException on calling getter method

From Dev

I am getting java.lang.SecurityException while get user name in android?

Related Related

  1. 1

    Getting java.lang.NullPointerException while calling activate method on TaskClient

  2. 2

    i am getting a java.lang.NullPointerException while executing the testng script

  3. 3

    In groovy getting java.lang.NullPointerException while JSONPATH lookup

  4. 4

    Why am I getting this "java.lang.NullPointerException: Attempt to invoke virtual method '…' on a null object reference" error?

  5. 5

    Getting java.lang.NullPointerException when calling Method.invoke

  6. 6

    Error java.lang.NullPointerException while calling class method

  7. 7

    Why I am getting java.lang.NullPointerException?

  8. 8

    why I am getting : java.lang.NullPointerException?

  9. 9

    Calling groovy method from script

  10. 10

    java.lang.NullPointerException error while accessing method from array

  11. 11

    I am getting NullpointerException at the time of pressing a button (on Search Button)java.lang.NullPointerException

  12. 12

    NullPointerException while calling a method from service

  13. 13

    I am calling userDao.findById(Integer i) and is giving java.lang.NullPointerException i am giving the exact id that is in db

  14. 14

    Why am I getting a java.lang.NullPointerException error when I try to switch activities in studio?

  15. 15

    I am getting java.lang.OutOfMemoryError from String manipulation

  16. 16

    why am i getting a NullPointerException Java

  17. 17

    Why am I getting a nullPointerException in Java?

  18. 18

    i am getting java.lang.NullPointerException when trying to check internetConnection?

  19. 19

    I am getting error java.lang.NullPointerException when insert element in Vector

  20. 20

    I am getting a java.lang.NullPointerException when using Apache POI

  21. 21

    Vue.js- I am getting "this.cancelOrderFunction is not a function" error while calling method inside a child component

  22. 22

    java.lang.StackOverflowError while calling a method

  23. 23

    Jenkins pipeline: java.lang.NoSuchMethodError: No such DSL method, while executing shell script inside groovy

  24. 24

    Mockito : java.lang.NullPointerException when calling method from mocked Class

  25. 25

    I am new to Groovy, I am running below Groovy Script. But here my objects are getting overridden

  26. 26

    java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference while getting instance of other class and method

  27. 27

    Why Am I getting "Exception in thread "main" java.lang.StackOverflowError" in recursive java method?

  28. 28

    Getting NullPointerException on calling getter method

  29. 29

    I am getting java.lang.SecurityException while get user name in android?

HotTag

Archive