2016-08-29 3 views
5

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

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

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

Это сработало для меня: http://stackoverflow.com/questions/37800195/how-do-you-load-a-groovy-file-and-execute-it –

ответ

2

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

Итак, у вас было бы это в «Thing.groovy»

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

return new Thing(); 

И вы бы это в Dsl сценарий:

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

Который должен напечатать «HI» для вывода на консоль.

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

+1

Это работает? Я получаю FileNotFoundException, потому что в каталоге на сервере Jenkins есть только Jenkinsfile, но не файл класса, который должен быть включен. –

+0

Согласен. Правильный ответ здесь: https://stackoverflow.com/questions/43881014/can-i-import-a-groovy-script-from-a-relative-directory-from-a-jenkinsfile – Nauraushaun

+0

Это не работает, если файл groovy живет с вашим файлом Jenkins. В файле Jenkins вы можете проверить репо вручную и загрузить с него файлы .groovy. В этом случае файл _is_ найден, но бросается следующее: java.io.NotSerializableException: Thing – Nauraushaun