2016-08-29 12 views
5

Bir Groovy sınıfını bir Jenkinsfile içine nasıl alabilirim? Birkaç yaklaşım denedim ama hiçbiri işe yaramadı. Groovy sınıfını bir Jenkinfile'a nasıl alabilirim?

Bu

ben almak istediğiniz sınıftır:

Thing.groovy Bunlar işe yaramazsa şeylerdir

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

Bu benim için çalıştı: http://stackoverflow.com/questions/37800195/how-do-you-load-a-groovy-file-and-execute-it –

cevap

2

Sen yük komutu aracılığıyla sınıfının yeni bir örneğini dönmek ve

"DoStuff" aramak için nesneyi kullanabilirsiniz

Yani, bunu "Thing.groovy"

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

return new Thing(); 

Ve siz DSL komut bu olurdu:

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

konsol çıkışına "HI" yazdırmalısınız Hangi.

Bu sizin gereksinimlerinizi karşılar mı?

+1

Bu çalışır? Bir FileNotFoundException alıyorum çünkü Jenkins sunucusundaki dizinde sadece Jenkinsfile var, ancak dahil edilmesi gereken sınıf dosyası değil. –

+0

Katılıyorum. Doğru cevap burada: https://stackoverflow.com/questions/43881014/can-i-import-a-groovy-script-from-a-relative-directory-from-a-jenkinsfile – Nauraushaun

+0

Bu groovy dosyası çalışmıyor Jenkinsfile ile yaşıyor. Jenkinsfile'da bir repo dosyasını el ile denetleyebilir ve oradan .groovy dosyalarını yükleyebilirsiniz. Bu durumda _is_ dosyası bulundu, ancak aşağıdakiler atıldı: java.io.NotSerializableException: Thing – Nauraushaun

İlgili konular