5

के साथ जेनकींस पाइपलाइन स्क्रिप्ट में डुप्लिकेट चेंजलॉग्स यह प्रश्न मूल रूप से this one जैसा ही है, सिवाय इसके कि मैं सबवर्सन का उपयोग कर रहा हूं, और कोई प्लगइन अपडेट ने मेरे लिए चाल नहीं की है।एसवीएन

मैं अपनी जेनकिन्सफाइल स्क्रिप्ट को मल्टीब्रैंच पाइपलाइन सेटिंग के साथ लोड कर रहा हूं, और चेंजलॉग प्रत्येक नए checkout scm पर डुप्लीकेट हो जाता है।

मेरे निर्माण में से मैं node के माध्यम से parallel ब्लॉक के अंदर आवंटित एकाधिक वर्कस्पेस का उपयोग कर रहा हूं, मैं उनमें से प्रत्येक के लिए ताजा चेकआउट कॉल कर रहा हूं, और चेंजलॉग डुप्लिकेशंस थोड़ा परेशान हो रहा है।

उत्तर

5

एक ही समस्या का सामना करना पड़ रहा है।

मैं निम्नलिखित कार्य कर रहा हूं, जब तक एसवीएन प्लग-इन जारी नहीं किया जाता है।

currentBuild.getChangeSets().clear() 
checkout scm 

ध्यान दें: आपको "इन-प्रोसेस स्क्रिप्ट स्वीकृति" पृष्ठ के माध्यम से स्क्रिप्ट कॉल को स्वीकृति देनी पड़ सकती है।

यह जेनकींस जॉब से चेंजलॉग को साफ़ करेगा। चेंजलॉग फिर से 'चेकआउट एसएमएम' कॉल से भरा जाएगा। अद्यतन: नीचे अपना संपादन देखें। यह "समाधान" काम नहीं करता है, क्योंकि एक बार पुनः प्रारंभ करने हटा संशोधन वापस कहते हैं ... मैं क्यों नहीं मिलता है, लेकिन ...

संपादित करें:

ठीक अब मैं एक नया रास्ता मिल गया:

for(i = 0; i < scm.getLocations().length; i++) { 
     def location = scm.getLocations()[i] 
     def svn_url = location.remote 
     checkout changelog: false, poll: false, scm: [$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: '252ad9ab-2f39-46f5-a77a-6196d1679dee', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: svn_url]], workspaceUpdater: [$class: 'UpdateWithRevertUpdater']] 
    } 

आप क्रेडेंशियल्स सही पाने के लिए "पाइप लाइन सिंटेक्स" पृष्ठ का उपयोग करना चाहिए। मैंने केवल

checkout changelog: false, scm 

का उपयोग करने का प्रयास किया लेकिन यह काम नहीं किया। तो आपको ऊपर दिखाए गए लंबे संस्करण का उपयोग करना होगा।

+0

वर्कअराउंड प्रस्तावित करने के लिए धन्यवाद, जैसे ही मैं छुट्टियों से काम पर वापस आऊंगा, मैं इसे आजमाउंगा। –

+0

एक ग़लत चीज़ पता चला ... यदि जेनकींस को पुनरारंभ किया गया है, तो ऐसा लगता है कि यह परिवर्तनों को पुनर्निर्मित करता है और पहले हटाए गए निर्माण को वापस जोड़ता है :( बस अपडेट के बाद पता चला और पुनरारंभ करें ... –

+0

ठीक है, मुझे एक नया कामकाजी तरीका मिला।, –

3

बेन हेरफर्थ का जवाब अच्छा है, मैं इसके लिए अपना अंतिम अनुकूलन पोस्ट करूंगा क्योंकि मैंने इसे एक ही कामकाजी फ़ंक्शन में थोड़ा सा लपेटने की कोशिश की थी।

इस समारोह मेरे लिए काम करता के रूप में मैं चेकआउट करने के लिए केवल एक ही SVN भंडार, और बाकी सब कुछ (जैसे पासवर्ड) है पहले से ही कॉन्फ़िगर किया गया है:

def checkout(){ 
    def svnLocation = scm.locations[0] 
    checkout(changelog: false, scm: [$class: 'SubversionSCM', locations: [svnLocation], workspaceUpdater: [$class: 'UpdateWithCleanUpdater']]) 
} 

मैं सिर्फ इस के लिए एक कॉल ड्रॉप हर जगह मैं एक ताजा की जरूरत है कामकाजी प्रतिलिपि

node('linux') {   
    checkout() 
    // ... run ITs on linux ... 
} 

node('windows') { 
    checkout() // doesn't duplicate changelog anymore 
    // ... run ITs on windows .... 
} 

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

3

बल्कि एससीएम वर्ग को पुनर्परिभाषित करने की तुलना में, एक अभी भी बहुत की तरह मूल "SCM" वस्तु को देखें और निष्क्रिय कर सकते हैं बदलाव का:

checkout(changelog: false, scm: scm) 

यह जबकि अक्षम करने "चेकआउट SCM" के उद्देश्य से behviour बनी रहेगी चेंजलॉग पीढ़ी

+0

अब काम करता है, धन्यवाद :) जब मैंने जवाब लिखा, तब वापस काम नहीं किया। –