jenkinsgroovyjenkins-pipelinegpars

Gpars withPool method called from Pipeline


I have my GParsPool.withPool implemented in 'PreVerifymanager.groovy' as below.

import groovyx.gpars.GParsPool


public class PreVerifyManager {

    static final THREADS = 3;
    public void callMe() {

        PreVerifyManager pf = new PreVerifyManager()

        def apps = ["App1","App2","App3"]
        GParsPool.withPool(PreVerifyManager.THREADS) {
            apps.eachParallel {
                pf.CreateFile(it)
            }
        }

    }


    public void CreateFile(String path){
        path = "D:\\"+path+".txt";
        println(path)
        File file = new File(path)
        file.write("Some text")


    }
}

This works fine in my IDE with main method of PreVerifyManager. But when I remove the main method and call the method callMe on the object of PreVerifyManager created in Pipeline script, its not working.

Pipeline script as below:

node {
    def PreVerifyManagerObj

    stage 'TibcoConfig'
    echo 'Reading Tibco configuration!'
    println "****************INSIDE PIPELINE****************"
    def parent = getClass().getClassLoader()
    def loader = new GroovyClassLoader(parent)

    PreVerifyManagerObj = loader.parseClass(new File("D://Tibco_Automation//src//com//meet//PreVerifyManager.groovy")).newInstance()

    PreVerifyManagerObj.callMe()
   }

Its basically, I'm integrating the GParsPool.withPool implementation with Pipeline scripting. Any input is appreciated.


Solution

  • The issue got resolved. You have to load all objects referred in your class into Pipeline script box, before you call your actual method.