2016-10-09 36 views
7

मैं अपनी जेनकींस पाइपलाइन स्क्रिप्ट को पठनीयता और पुन: उपयोग के लिए कक्षाओं में दोबारा बनाना चाहता हूं।कक्षाओं में जेनकींस पाइपलाइन स्क्रिप्ट के अनुभाग निकालने के लिए कैसे?

समस्या यह है कि मुझे ऐसा करने पर अपवाद मिलते हैं।

जब मैं चलाने

echo currentBuild.toString() 

सब कुछ ठीक

है लेकिन जब मैं इसे एक वर्ग में निकालने के रूप में इतना:

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

मैं एक मिल को एक सरल उदाहरण पर नजर डालते हैं अपवाद:

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

कक्षाओं में पाइपलाइन कोड निकालने का उचित तरीका क्या है?

उत्तर

7

आप सही रास्ते पर हैं, लेकिन समस्या यह है कि आपने स्क्रिप्ट ऑब्जेक्ट को अपनी कक्षा के उदाहरण में पास नहीं किया था और जिस विधि को आपने बनाया है उस वर्ग में परिभाषित नहीं किया गया था।

// 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

आप अपनी तरह के लिए धन्यवाद:

यहाँ इस हल करने के लिए एक ही रास्ता है जवाब। मैंने प्रश्न पोस्ट करने के कुछ मिनट बाद इसे निकाला :) –

+0

ओह, एनपी मुझे खुशी है कि आपने यह प्रश्न हल किया है;) – sshepel

+1

यह नवीनतम पाइपलाइन प्लगइन v2.5 के साथ काम नहीं कर रहा है। निम्नलिखित अपवाद फेंक दिया गया है 'groovy.lang.MissingPropertyException: ऐसी कोई संपत्ति नहीं: कक्षा के लिए स्क्रिप्ट: MyClass' – bram

2

अपने कोड लापता घोषित वर्ग क्षेत्र स्क्रिप्ट

class MyClass implements Serializable { 

    def script 

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

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

इस कोड को ठीक @bram होना चाहिए

संबंधित मुद्दे