मैं एक ही मुद्दे में भाग गया और इसे ठीक करने के लिए एकाधिक एस सी एम एस प्लगइन कांटा करने के लिए फैसला किया: https://github.com/JakeStoeffler/multiple-scms-plugin
आप चाहें, तो बस मेरी रेपो क्लोन और चलाने mvn
HPI फ़ाइल (target/multiple-scms.hpi
पर स्थित) का निर्माण करने के , जिसे आप मैन्युअल रूप से अपलोड कर सकते हैं और जेनकींस में इंस्टॉल कर सकते हैं। इसके बजाय यदि आप अपने आप को सुधार करने करना चाहते हैं, तो क्लोन the original repo सीधे, MultiSCM.java
को खोलने, और निम्नलिखित की तरह कुछ के साथ buildEnvVars()
विधि में कोड की जगह:
@Override
public void buildEnvVars(AbstractBuild<?,?> build, Map<String, String> env) {
// Add each SCM's env vars, appending indices where needed to avoid collisions
for (int i = 0; i < scms.size(); i++) {
try {
EnvVars currScmVars = new EnvVars();
scms.get(i).buildEnvVars(build, currScmVars);
for (Entry<String, String> entry : currScmVars.entrySet()) {
if (env.containsKey(entry.getKey())) {
// We have a collision; append the index of this SCM to the env var name
env.put(entry.getKey() + "_" + i, entry.getValue());
} else {
// No collision; just put the var as usual
env.put(entry.getKey(), entry.getValue());
}
}
}
catch(NullPointerException npe) {}
}
}
उम्मीद है कि टिप्पणियों सुंदर आत्म व्याख्यात्मक रहे हैं। असल में, मूल कोड में बग यह है कि जब आपके पास एक ही पर्यावरण चर नामों के साथ एकाधिक एससीएम होते हैं, तो वेरिएबल्स को ओवरराइट किया जाता है क्योंकि उन्हें फिर से चालू किया जा रहा है। हम इन ओवरराइट्स को रोकने और वैरिएबल नाम में एक इंडेक्स जोड़ने के बजाय इसके आसपास काम करते हैं।
इसका इस्तेमाल करने का एक उदाहरण है: यदि हमारी परियोजना 3 Git एस सी एम एस के लिए कॉन्फ़िगर है, अब हम व्यक्तिगत रूप से env का उपयोग करके प्रत्येक Git रेपो के नवीनतम प्रतिबद्ध हैश का उपयोग कर सकते वार्स GIT_COMMIT
, GIT_COMMIT_1
, और GIT_COMMIT_2
। संलग्न इंडेक्स जेनकींस में प्रोजेक्ट कॉन्फ़िगरेशन में एससीएम के आदेश से मेल खाते हैं।
जाहिर है यह एक त्वरित और गंदे समाधान है, लेकिन यह मेरे लिए आवश्यक काम करने के लिए काम करता है। अपनी जरूरतों को पूरा करने के लिए इसे अनुकूलित करने के लिए स्वतंत्र महसूस करें।
स्रोत
2015-09-15 04:18:30
धन्यवाद मैं एक नज़र डालेगा। – Jason
इसे जेनकिन्स अपस्ट्रीम के लिए पुल अनुरोध क्यों नहीं किया गया है? – Will
@Will इसे विलय कर दिया गया है - देखें [पीआर] (https://github.com/jenkinsci/multiple-scms-plugin/pull/12)। –