web-dev-qa-db-fra.com

Comment importer une classe Groovy dans un fichier Jenkinfile?

Comment importer une classe Groovy dans un fichier Jenkins? J'ai essayé plusieurs approches mais aucune n'a fonctionné.

C'est la classe que je veux importer:

Chose.groovy

class Thing {
    void doStuff() { ... }
}

Ce sont des choses qui ne fonctionnent pas:

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()
}
6
Leonhardt Koepsell

Vous pouvez retourner une nouvelle instance de la classe via la commande load et utiliser l'objet pour appeler "doStuff"

Donc, vous auriez ceci dans "Thing.groovy"

class Thing {
   def doStuff() { return "HI" }
}

return new Thing();

Et vous auriez ceci dans votre script DSL:

node {
   def thing = load 'Thing.groovy'
   echo thing.doStuff()
}

Ce qui devrait afficher "HI" sur la sortie de la console.

Cela satisferait-il vos exigences?

5
Daniel Omoto

C'est intéressant, de toute façon vous pouvez avoir plusieurs constructeurs?

Vous pouvez facilement si vous utilisez une bibliothèque partagée, mais dans ce cas la classe est en dehors d'une bibliothèque partagée

0
Zangdar