Search code examples
jenkinsgroovyjenkins-pipelinepipeline

How to call external groovy script from jenkins pipeline


I am going through a jenkins pipeline someone else did for my organization. I saw inside that jenkins pipeline it has called to a external groovy script but I have no idea about that process. This is how it has been called.

sh "groovy -cp /apps/scripts /apps/scripts/BuildReport.groovy ${env.BUILD_URL} ${env.BUILD_ID}" 

I know ${env.BUILD_URL} ${env.BUILD_ID} are the arguments that has been passed to the groovy script. But what is the meaning of groovy -cp ?

and why /apps/scripts has mentioned two times?

can someone clear please..? Thanks in advance..!


Solution

  • The sh command is using the Groovy installation of your Jenkins Agent. -cp argument specifies the classpath, this is where your additional dependencies will reside. For example, if BuildReport.groovy requires additional dependencies you can point to a directory where the additional dependencies are located. The following is from the groovy man pages.

    -cp, -classpath, --classpath=<path>
                                 Specify where to find the class files - must be
                                   first argument
    

    Having said that, in your case, if you don't have any dependent Classes, specifying the classpath would be redundant.