How do I import a Groovy class into a Jenkinfile?
24,442
You can return a new instance of the class via the load command and use the object to call "doStuff"
So, you would have this in "Thing.groovy"
class Thing {
def doStuff() { return "HI" }
}
return new Thing();
And you would have this in your dsl script:
node {
def thing = load 'Thing.groovy'
echo thing.doStuff()
}
Which should print "HI" to the console output.
Would this satisfy your requirements?
Author by
Leonhardt Koepsell
Updated on May 16, 2020Comments
-
Leonhardt Koepsell almost 4 years
How do I import a Groovy class within a Jenkinsfile? I've tried several approaches but none have worked.
This is the class I want to import:
Thing.groovy
class Thing { void doStuff() { ... } }
These are things that don't work:
Jenkinsfile-1
node { load "./Thing.groovy" def thing = new Thing() }
Jenkinsfile-2
import Thing node { def thing = new Thing() }
Jenkinsfile-3
node { evaluate(new File("./Thing.groovy")) def thing = new Thing() }
-
Rainer Blessing almost 7 yearsThis works? I get a FileNotFoundException, because in the directory on the Jenkins server there is just Jenkinsfile, but not the classfile which needs to be included.
-
Nauraushaun almost 7 yearsI agree. Correct answer here: stackoverflow.com/questions/43881014/…
-
Nauraushaun almost 7 yearsThis does not work if the groovy file lives with your Jenkinsfile. In the Jenkinsfile you may checkout a repo manually and load .groovy files from there. In this case the file is found, but the following is thrown: java.io.NotSerializableException: Thing