2015-01-13 5 views
18

मैं निम्नलिखित JobDSL कल्पना है:सामान्य जेनकींस जॉबडीएसएल कोड को दोबारा कैसे बदला जाए?

job { 
    steps { 
    gradle('generateLock saveLock', '-PdependencyLock.includeTransitives=true', true) { node -> 
     node/wrapperScript('${NEBULA_HOME}/gradlew') 
    } 
    gradle('check', '', true) { node -> 
     node/wrapperScript('${NEBULA_HOME}/gradlew') 
    } 
    } 
} 

मैं एक समारोह में, आम कोड, कहते हैं refactor करने के लिए करना चाहते हैं:

def gradlew(String tasks, String options) { 
    gradle(tasks, options, true) { node -> 
    node/wrapperScript('${NEBULA_HOME}/gradlew') 
    } 
} 

लेकिन gradle समारोह के भीतर से दिखाई नहीं देता है gradlew फ़ंक्शन। ऐसा करने का सही तरीका क्या है?

उत्तर

24

घुंघराले ब्रैकेट एक ग्रोवी बंद कर देते हैं। प्रत्येक बंद करने के लिए एक प्रतिनिधि वस्तु होती है जिस पर विधि कॉल निर्देशित होते हैं। और प्रतिनिधि को delegate संपत्ति के माध्यम से पहुंचा जा सकता है। आप उस प्रतिनिधि को इसके तरीकों तक पहुंच प्राप्त करने के लिए सहायक कार्य में पास कर सकते हैं।

def gradlew(def context, String tasks, String options = '') { 
    context.gradle(tasks, options, true) { node -> 
    node/wrapperScript('${NEBULA_HOME}/gradlew') 
    } 
} 
job { 
    steps { 
    gradlew(delegate, 'generateLock saveLock', '-PdependencyLock.includeTransitives=true') 
    gradlew(delegate, 'check') 
    } 
} 
+3

मैं सामान्य रूप से प्रयुक्त कोड को निकालने के तरीके पर प्रोजेक्ट विकी पर कुछ स्पष्ट उदाहरण करने की अनुशंसा करता हूं। हम कुछ समय के लिए एक ही चीज़ खोज रहे थे। –

+3

मैं विन्यास ब्लॉक के बारे में जॉब डीएसएल विकी पेज को अपडेट करने जा रहा हूं, https://github.com/jenkinsci/job-dsl-plugin/pull/683 – daspilker

+0

देखें नोड -> नोड/के बाद आगे स्लैश क्या करता है। .. – sloven

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