2016-08-29 21 views
5

Jak zaimportować klasę Groovy w pliku Jenkins? Próbowałem kilku podejść, ale żaden z nich nie zadziałał.Jak zaimportować klasę Groovy do pliku Jenkin?

To jest klasa chcę zaimportować:

Thing.groovy

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

Są to rzeczy, które nie działają:

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

To zadziałało dla mnie: http://stackoverflow.com/questions/37800195/how-do-you-load-a-groovy-file-and-execute-it –

Odpowiedz

2

Można zwrócić nową instancję klasy poprzez polecenie obciążenia i użyć obiektu, aby zadzwonić "DoStuff"

Tak więc, masz to w "Thing.groovy"

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

return new Thing(); 

i trzeba to w skrypcie DSL:

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

Który powinien wydrukować "HI" do wyjścia konsoli.

Czy to spełni Twoje wymagania?

+1

To działa? Dostaję wyjątek FileNotFoundException, ponieważ w katalogu na serwerze Jenkinsa znajduje się tylko plik Jenkinsfile, ale nie plik klasy, który należy uwzględnić. –

+0

Zgadzam się. Poprawna odpowiedź tutaj: https://stackoverflow.com/questions/43881014/can-i-import-a-groovy-script-from--relative-directory-from-a-jenkinsfile – Nauraushaun

+0

To nie działa, jeśli plik groovy mieszka z twoim Jenkinsfile. W pliku Jenkinsfile możesz ręcznie pobrać repozytorium i wczytać pliki .groovy. W tym przypadku plik _is_ został znaleziony, ale wyrzucono: java.io.NotSerializableException: Thing – Nauraushaun