2016-10-09 24 views
7

Jenkins pipeline senaryosunu okunabilirlik ve yeniden kullanım için yeniden sınıflarına yeniden girmek istiyorum.Jenkins pipeline script bölümlerini sınıflara nasıl çıkartırsınız?

Sorun, bunu yaparken istisnaları alıyorum.

i şekilde bir sınıf içine ayıklamak zaman ben

echo currentBuild.toString() 

herşey iyi

olduğunu çalıştırmak Ama:

class MyClass implements Serializable { 
    def runBuild() { 
     echo currentBuild.toString() 
    } 
} 
new MyClass().runBuild() 

i bir olsun Basit bir örnekle inceleyelim istisna:

Started by user admin 
Replayed #196 
[Pipeline] End of Pipeline 
groovy.lang.MissingPropertyException: No such property: currentBuild for class: MyClass 

Boru hattı kodlarının sınıflara çıkarılmasının uygun yolu nedir?

cevap

7

Doğru yoldayız, ancak sorun, komut dosyası nesnesini sınıfınızın örneğine aktarmadığınız ve oluşturduğunuz sınıfta tanımlı olmayan yöntemi çağırmaya çalıştığınızdır. senin tür

// Jenkins file or pipeline scripts editor in your job 
new MyClass(this).runBuild() 

// Class declaration 
class MyClass implements Serializable { 
    def script 
    MyClass(def script) { 
     this.script=script 
    } 
    def runBuild() { 
     script.echo script.currentBuild.toString() 
    } 
} 
+0

Teşekkür size: Burada

bu çözmek için tek yoldur Cevap. Soruyu gönderdikten birkaç dakika sonra anladım :) –

+0

Oh, np Bu soruyu çözdüğünüze sevindim;) – sshepel

+1

Bu, son boru hattı eklentisi v2.5 ile çalışmıyor gibi görünüyor. İstisna aşağıdaki istisna 'groovy.lang.MissingPropertyException: Hayır böyle bir özellik: sınıf için komut dosyası: MyClass' – bram

2

sınıf sahadan beyan eksik kodunuzu bu kod Tamam @bram olmalıdır komut

class MyClass implements Serializable { 

    def script 

    MyClass(def script) { 
     this.script=script 
    } 

    def runBuild() { 
     script.echo script.currentBuild.toString() 
    } 
} 

İlgili konular