2014-04-07 13 views
7

के साथ जेनकिंस में वर्कस्पेस से फ़ाइल पढ़ना मैं फ़ाइल पढ़ने के लिए ग्रूवी प्लगइन के साथ एक बिल्ड चरण जोड़ना चाहता हूं और फ़ाइल की सामग्री के आधार पर निर्माण विफल करना चाहता हूं।ग्रोवी स्क्रिप्ट

मैं groovy प्लगइन में वर्कस्पेस फ़ाइल पथ कैसे इंजेक्ट कर सकता हूं?

myFileDirectory = // Get workspace filepath here ??? 
myFileName = "output.log" 
myFile = new File(myFileDirectory + myFileName) 

lastLine = myFile.readLines().get(myFile.readLines().size().toInteger() - 1) 
if (lastLine ==~ /.Fatal Error.*/){ 
    println "Fatal error found" 
    System.exit(1) 
} else{ 
    println "nothing to see here" 
} 
+0

जेनकींस स्वयं पर असफल हो सकता है उदा। परीक्षण के परिणाम। आप वास्तव में क्या हासिल करना चाहते हैं? शायद इसके लिए पहले से ही एक प्लगइन है। फ़ाइल नाम पास करने के बजाय आप फ़ाइल खोज को कार्यान्वित कर सकते हैं। – Opal

+0

मेरे पास एक बाहरी प्रोग्राम (exe) है जिसे मैं निष्पादन योग्य उत्पन्न करने के लिए बुला रहा हूं, यह एक लॉग फ़ाइल भी उत्पन्न करता है। मैं उस लॉग फ़ाइल में देखना चाहता हूं और निर्माण में विफल रहता हूं अगर [घातक त्रुटि] पाई जाती है। –

+0

ठीक है, ठीक है। मुझे लगता है कि इस लॉग में कुछ नाम है जिसे आसानी से पहचाना जा सकता है। यदि ऐसा है, तो इस फ़ाइल को दिए गए पथ के लिए ढूंढें और सामग्री की जांच करें। – Opal

उत्तर

3

अपनी टिप्पणी के आधार पर, आप के साथ Text-finder प्लगइन बंद बेहतर होगा।

यह नियमित अभिव्यक्ति के लिए फ़ाइल (ओं), साथ ही कंसोल खोजने की अनुमति देता है और फिर निर्माण को unstable या failed पर सेट करने की अनुमति देता है।

ग्रूवी का सवाल है, आप ${WORKSPACE} वातावरण चर का उपयोग करने के लिए निम्न का उपयोग कर सकते हैं:
def workspace = manager.build.getEnvVars()["WORKSPACE"]

+9

#groovyNoob यहाँ। प्रबंधक.bulid.getEnvVars आयात किया जा सकता है? –

0

आप पहले से ही ग्रूवी (Postbuild) प्लग इन इंस्टॉल है, तो मुझे लगता है कि यह एक वैध इस के साथ कर पाने की इच्छा है (जेनेरिक) ग्रोवी एक (विशेष) प्लगइन स्थापित करने के बजाय।

उस ने कहा, आप manager.build.workspace.getRemote() का उपयोग कर वर्कस्पेस प्राप्त कर सकते हैं। पथ और फ़ाइल नाम के बीच File.separator जोड़ने के लिए मत भूलना।

20

मुझे एहसास है कि यह सवाल प्लगइन बनाने के बारे में था, लेकिन चूंकि नई जेनकींस 2 पाइपलाइन ग्रोवी का उपयोग करती है, इसलिए मुझे पाइपलाइन निर्माण में वर्कस्पेस से फ़ाइल को पढ़ने का तरीका जानने के दौरान खुद को यहां मिला। तो शायद मैं भविष्य में मेरे जैसे किसी की मदद कर सकता हूं।

बाहर कर देता है यह बहुत आसान है, वहाँ है एक readfile कदम है, और मैं RTFM होना चाहिए:

env.WORKSPACE = pwd() 
def version = readFile "${env.WORKSPACE}/version.txt" 
+0

क्या आप इसे पढ़ने के बाद ऑब्जेक्ट के माध्यम से पुन: प्रयास कर सकते हैं? मैं करने में असमर्थ हूं .. और जेनकिंस एक ही समय में एक त्रुटि फेंक नहीं रहा है .. मूर्खतापूर्ण सामान odding कोशिश की .. pheww! – OK999

+0

आउटपुट एक स्ट्रिंग है ताकि आप इसे पार्स कर सकें और \ n पर विभाजित कर सकें \ n अगर आप लाइन – Cal

0

आप एक पाइप लाइन के निर्माण के चरण के दौरान कार्यक्षेत्र से एक फ़ाइल को पढ़ने के लिए कोशिश कर रहे हैं, वहाँ एक विधि के लिए है कि:

readFileFromWorkspace('name-of-file.groovy') 

संदर्भ के लिए, https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-readfile-code-read-file-from-workspace देखें।

+0

लाइन पर इसे देखना चाहते हैं तो वास्तव में प्रदान किया गया लिंक 'readFile() 'के बारे में बताता है (मुझे कोई भी' readFile से वर्कस्पेस नहीं मिला) ') - लेकिन वैसे भी धन्यवाद, क्योंकि readFile() मेरी समस्या हल! – Roman

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