2015-12-10 7 views
7

Multibranch कार्यप्रवाह का उपयोग के साथ बनाता है, आदेश की तरहस्वच्छ Multibranch कार्यप्रवाह

checkout scm 

दिखता है की जाँच करने के लिए मैं एक तरह से जेनकींस बताने के लिए एक साफ चेकआउट प्रदर्शन करने के लिए नहीं मिल रहा। "साफ" से मेरा मतलब है कि इसे वर्कस्पेस से सभी फ़ाइलों को हटा देना चाहिए जो संस्करण नियंत्रण में नहीं हैं।

+3

मैं नहीं जानता कि क्या 'checkout' multibranch में आगे ले जा सकते हैं मापदंडों मैं कल्पना नहीं है एक और अधिक सुरुचिपूर्ण समाधान, लेकिन यदि आप गिट का उपयोग कर रहे हैं, तो आपको 'sh' git clean -fdx 'चलाने में सक्षम होना चाहिए 'चेकआउट' चरण के बाद। –

उत्तर

4

मैं सुनिश्चित नहीं हूं reate अगर यह मूल सवाल का जवाब या नहीं यह अभी भी सही नहीं है (मैं नहीं बता सकता कार्यक्षेत्र में कुछ फाइलें) लेकिन क्यों सिर्फ पहली कार्यक्षेत्र को दूर नहीं है, यह एक स्वच्छ चेकआउट की अनुमति होगी:।

stage ('Clean') { 
    deleteDir() 
} 

stage ('Checkout') { 
    checkout scm 
} 
2

सबसे पहले, आप यह नहीं मान सकते कि वर्कफ़्लो नौकरी में वर्कस्पेस है क्योंकि यह फ्रीस्टाइल नौकरियों के लिए था। असल में, वर्कफ़्लो जॉब एक ​​से अधिक वर्कस्पेस का उपयोग कर सकता है (प्रत्येक node या ws ब्लॉक के लिए एक)।

ने कहा कि, जो मैं प्रस्तावित करने जा रहा हूं वह एक प्रकार का हैकी है: CleanCheckout एक्सटेंशन सेट करने के लिए चेकआउट से पहले एसएमएम ऑब्जेक्ट को संशोधित करें (आपको वहां कुछ कॉल स्वीकृति देनी होगी)।

import hudson.plugins.git.extensions.impl.CleanCheckout 
scm.extensions.replace(new CleanCheckout()) 
checkout scm 

लेकिन मैं क्रिस्टोफर ऑर के प्रस्ताव पसंद करते हैं, के बाद checkout (sh 'git clean -fdx') एक खोल कदम का उपयोग करें।

+0

इसके लिए धन्यवाद। दोनों सुझावों के साथ समस्या यह है कि यह केवल गिट के साथ काम करता है। –

+0

अधिकांश एससीएम कार्यान्वयन के लिए समकक्ष हैं। उदाहरण के लिए, उपversण के लिए आप 'scm.setWorkspaceUpdater (नया अपडेट WithCleanUpdater()) ' – amuniz

+0

का उपयोग कर सकते हैं मैं इन चीज़ों पर दस्तावेज़ कहां पा सकता हूं? (मैं एचजी का उपयोग कर रहा हूं।) –

-1

जेनकिंस में वर्तमान में ग्रोवी पाइपलाइन वाक्यविन्यास उत्पन्न करने के लिए एक पृष्ठ है। चेकआउट चरण का चयन करना आप उन सभी अतिरिक्त विकल्पों को जोड़ने में सक्षम होना चाहिए जिनका आप उपयोग कर रहे हैं।

checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[url: 'ssh://repo/location.git']]] 
+1

यह उत्तर केवल सामान्य पाइपलाइन नौकरी पर काम करता है लेकिन मल्टीब्रैंच पाइपलाइन नौकरी पर काम नहीं करता है। –

0

मैं एक ही समस्या में चलाने के लिए और यहां मेरे समाधान नहीं है:

मैं जिसके बाद आप क्या चाहते हैं क्या करना चाहिए उत्पन्न। मैंने चेकआउट के लिए एक नया एसएमएम ऑब्जेक्ट बनाया और क्लीनबॉयर चेकआउट के साथ एक्सटेंशन बढ़ाए। लेकिन मैंने अन्य कॉन्फ़िगरेशन जैसे शाखाओं और उपयोगकर्ता रिमोट कॉन्फिग्स को रखा। अगर इरादा छोड़ने के लिए था

checkout([ 
    $class: 'GitSCM', 
    branches: scm.branches, 
    extensions: scm.extensions + [[$class: 'CleanBeforeCheckout']], 
    userRemoteConfigs: scm.userRemoteConfigs 
]) 

क्योंकि आप एक नई वस्तु :(

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