Как импортировать класс Groovy в файл Jenkinfile?

Как импортировать класс Groovy в файл Jenkinsfile? Я пробовал несколько подходов, но ни один не сработал.

Это класс, который я хочу импортировать:

Thing.groovy

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

Это вещи, которые не работают:

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()
}

1 ответ

Решение

Вы можете вернуть новый экземпляр класса с помощью команды load и использовать объект для вызова doStuff.

Итак, вы бы это в "Thing.groovy"

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

return new Thing();

И у вас будет это в вашем сценарии DSL:

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

Который должен вывести "HI" на вывод консоли.

Будет ли это удовлетворить ваши требования?

Это интересно, в любом случае вы можете иметь несколько конструкторов?

Вы можете легко, если вы используете общую библиотеку, но в этом случае класс находится за пределами общей библиотеки

Другие вопросы по тегам