6

How can we pass parameters in Groovy script in Jenkins pipeline?

I have written xyz.groovy, it loads and executes fine but i would like to pass parameters in it instead of duplication of jobs. I tried passing load '../xyz.groovy' param1 param2 but no luck.

Pipeline script:

node { load '../xyz.groovy' }() 

xyz.groovy

import hudson.model.* import groovy.json.JsonBuilder import groovy.json.JsonOutput import java.net.URL echo "\nParameters.." echo param1 echo param2 

2 Answers 2

2

Can't you do something similar to this instead: How do you load a groovy file and execute it

You create methods in your groovy that you call with the parameters?

node { def script = load '../xyz.groovy' script.method(param1, param2) } 
Sign up to request clarification or add additional context in comments.

Comments

1

This can be done simply by using the ${jenkins_param} syntax

e.g

  • define a string param in the Jenkins build job called RELEASE_VERSION = "1.0"
  • reference this as ${RELEASE_VERSION} in the groovy script

This will resolve as "1.0" when the script is running

1 Comment

This works because you can reference params.xyz with env.xyz. You can't access params outside of the pipeline (unless you pass in the params object), but you can access env anywhere. And, in the above example, ${RELEASE_VERSION} really means ${env.RELEASE_VERSION}. I haven't played with non-string params as env vars; i would assume they are transformed to strings.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.