2016-05-16 8 views
14

के मामले में समस्याओं मैं अपने Jenkinsfile में नीचे एक के समान कोड है: उपरोक्त कोड क्योंकि में कुछ जेनकींस-पाइपलाइन से संबंधित त्रुटियों के विफल रहता हैट्राई/कैच/अंत में मास्क Jenkinsfile ग्रूवी संकलक अपवाद

node { 
    checkout scm 
    // do some stuff 
    try { 
     // do some maven magic 
    } catch (error) { 
     stage "Cleanup after fail" 
     emailext attachLog: true, body: "Build failed (see ${env.BUILD_URL}): ${error}", subject: "[JENKINS] ${env.JOB_NAME} failed", to: '[email protected]' 
     throw error 
    } finally { 
     step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml' 
    } 
} 

try { } (उदाहरण के लिए अनुमोदित स्थैतिक विधि का उपयोग) स्क्रिप्ट चुपचाप विफल रहता है। जब मैं कोशिश/पकड़/अंत में हटा देता हूं तो मैं त्रुटियों को देख सकता हूं। क्या मैं कुछ गलत कर रहा हूं? error को पुनर्स्थापित नहीं करना चाहिए लॉग में पाइपलाइन त्रुटियां दिखाई दें?

संपादित करें: मैंने वाक्यविन्यास को ग्रोवी करने के लिए समस्या को कम करने में कामयाब रहा है, उदाहरण के लिए मैं एक वेरिएबल का उपयोग करता हूं जिसे अभी तक असाइन नहीं किया गया है। उदाहरण: echo foo यदि foo कहीं भी घोषित/असाइन नहीं किया गया है तो जेनकींस निर्माण में असफल हो जाएंगे और अगर यह कोशिश/पकड़/अंत में अपवाद को पुनर्स्थापित करता है तो इसका कारण नहीं दिखाएगा।

+0

यदि यह सादा ग्रोवी था, हाँ, यह काम करता, लेकिन क्योंकि यह एक ग्रोवी डीएसएल है, इसलिए डीएसएल धावक जो भी अपवाद के साथ चाहता है वह कर सकता है ... शायद आपको इसके बजाय प्रयास करना चाहिए: https: // jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-error-code-error-signal – Renato

+0

@RenatoBut https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/# कोड-कैचरर-कोड-कैच-एरर-एंड-सेट-बिल्ड-परिणाम बताता है कि कोशिश/पकड़/आखिरकार काम करना चाहिए –

+0

दाएं, लेकिन अगर आपको यह समस्या दिखती है तो ऐसा नहीं लगता है ... – Renato

उत्तर

4

ऐसा तब होता है जब finally ब्लॉक के अंदर या catch के अंदर फिर से फेंकने से पहले एक अतिरिक्त अपवाद फेंक दिया जाता है। इन मामलों में RejectedAccessException निगल लिया गया है और script-security इसे पकड़ नहीं पाता है।

+0

अंत में कोई अपवाद फेंक दिया नहीं गया है, क्योंकि जब मैं कोशिश ब्लॉक में अपमानजनक रेखा को हटाता हूं तो यह सही तरीके से काम करता है। –

+0

फिर यह पकड़ के अंदर फिर से फेंकने से पहले होना चाहिए। – amuniz

+0

नहीं, ग्रोवी स्क्रिप्ट का उपयोग करने पर आसानी से पुन: उत्पन्न होता है उदा। एक अविकसित चर। कोई अपवाद स्टैक ट्रेस नहीं है, जब मैं कोशिश/पकड़/अंत में हटा देता हूं तो मुझे स्टैकट्रैक मिलता है। –