2016-04-29 24 views
25

में कार्यक्षेत्र निर्देशिका का निरपेक्ष पथ जाओ मैं वर्तमान में जेनकींस पाइपलाइन प्लगइन पर कुछ मूल्यांकन कर रहा हूँ (पूर्व कार्यप्रवाह प्लगइन के रूप में जानते हैं)। प्रलेखन मुझे पता चला कि मैं वर्तमान में उपयोग कर कार्यक्षेत्र पथ env.WORKSPACE retriev नहीं कर सकते पढ़ना:जेनकींस पाइपलाइन प्लगइन

NODE_LABELS

WORKSPACE

:

निम्न चर वर्तमान में एक कार्यप्रवाह स्क्रिप्ट के अंदर उपलब्ध नहीं हैं इस तरह के SVN_REVISION के रूप में एससीएम-विशिष्ट चरों

क्या कोई अन्य तरीका है कि वर्तमान कार्यक्षेत्र के लिए पूर्ण पथ कैसे प्राप्त करें? मुझे कुछ परीक्षण चलाने की ज़रूरत है जो बदले में कुछ पैरामीटर (कुछ निष्पादन योग्य फ़ाइल के लिए पूर्ण पथ) प्राप्त करता है। मैं पहले से ही एक @NonCPS खंड के अंदर new File("").absolutePath() उपयोग करने की कोशिश, लेकिन लगता है कि गैर-सीपीएस सामान हमेशा गुरु को फांसी दे जाता है।

किसी को कैसे इस पथ कुछ बैच स्क्रिप्ट जो जो बाद में फिर से पढ़ा जा सकता है कुछ फाइल में पथ संग्रहीत करता चलने के बिना प्राप्त करने के लिए एक सुराग है?

उत्तर

8

Pipeline Nodes and Processes Plugin (डिफ़ॉल्ट रूप से स्थापित पाइपलाइन प्लगइन का एक घटक) के संस्करण 2.5 के बाद से, WORKSPACE पर्यावरण चर फिर से उपलब्ध है। यह संस्करण 2016-09-23 को जारी किया गया था, इसलिए यह सभी अद्यतित जेनकिन्स उदाहरणों पर उपलब्ध होना चाहिए।

28

नोट: इस समाधान केवल तभी कारगर साबित दास मास्टर के रूप में ही निर्देशिका संरचना है। pwd()JENKINS-33511 के कारण मास्टर पर वर्कस्पेस निर्देशिका वापस कर देगा।

मैं पाइपलाइन प्लगइन का pwd() कार्यक्षमता का उपयोग यह करने के लिए इस्तेमाल किया। इसलिए, यदि आपको दास पर वर्कस्पेस प्राप्त करने की आवश्यकता है, तो आप इस तरह की smth कर सकते हैं:

node('label'){ 
    //now you are on slave labeled with 'label' 
    def workspace = pwd() 
    //${workspace} will now contain an absolute path to job workspace on slave 
} 

आशा है कि इससे मदद मिलेगी।

+0

डॉन। शायद कुछ चश्मा की जरूरत है। पूरी तरह से याद किया कि वहाँ pwd() उपलब्ध है। मुझे इसी की तो तलाश थी। धन्यवाद! –

+0

और, अभी तक, में चर्चा के अनुसार [इस टिकट] (https://issues.jenkins-ci.org/browse/JENKINS-33511), 'लोक निर्माण विभाग()' मास्टर का काम निर्देशिका, नहीं वापस आ जाएगी नोड आप पर हैं। –

+0

एक तथ्य मैंने अभी पुष्टि की है। 'pwd() 'गुलामों पर _not_ काम नहीं करेगा, जब तक कि वे मास्टर के समान निर्देशिका संरचना न हों। –

0

आप एक स्क्रिप्ट का उपयोग कर रहे हैं, कार्यक्षेत्र की अवधारणा अर्थहीन है। आपकी सबसे अच्छी शर्त फ़ाइल को स्ट्रिंग में पढ़ने के लिए readFile का उपयोग करना है, फिर प्रसंस्करण के लिए उस स्ट्रिंग को अपनी लाइब्रेरी में पास करें। Pwd() विधि आपकी मदद नहीं कर सकती क्योंकि यह मास्टर पर निष्पादित होती है, और आपकी फ़ाइलें नोड पर संग्रहीत होती हैं।

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