2016-05-23 5 views
12

मैं जेनकिन्सफाइल के साथ जेनकींस पाइपलाइन प्लगइन का उपयोग कर रहा हूं।जेनकिन्सफाइल दो गीट भंडारों के साथ

एक भंडार में, जिसे vms.git कहा जाता है, मेरे पास जेनकिन्सफाइल और एक एप्लिकेशन है जो बनाता है।

मेरे पास deploy.git नामक एक और भंडार है, जिसमें स्क्रिप्ट शामिल हैं जिन्हें मैं vms.git में एप्लिकेशन को तैनात करने के लिए उपयोग करना चाहता हूं।

फिलहाल मेरी Jenkinsfile सिर्फ इस

node { 
    stage 'build' 
    checkout scm 

तरह लग रहा है और मैं काम विन्यास में vms.git रेपो को परिभाषित कर रहा हूँ।

तो मैं जो करना चाहता हूं वह दोनों रिपॉजिटरीज़ को जांचना है, फिर शेष निर्माण को परिभाषित करने के लिए vms.git में जेनकिन्सफाइल का उपयोग करें। मैं अन्य पाइपलाइनों में deploy.git स्क्रिप्ट का पुन: उपयोग करना चाहता हूं इसलिए मैं वहां जेनकिन्सफाइल नहीं डालना चाहता हूं।

उत्तर

23

आप checkout का उपयोग करके कई निर्देशिकाओं को चेकआउट कर सकते हैं, लेकिन आपको निर्देशिका निर्दिष्ट करना होगा जहां आप इसे चेकआउट करना चाहते हैं। आप जेनकींस (स्निपेट जेनरेटर बोले स्क्रिप्ट फ़ील्ड) का उपयोग करके स्निपेट जेनरेट कर सकते हैं। चेकआउट, अगली गिट भंडार चुनें और अतिरिक्त व्यवहार में चुनें: उप निर्देशिका में चेकआउट।

जब आपके पास 2 रिपॉजिटरीज़ होंगी तो आप रिपोजिटरी से स्क्रिप्ट लोड कर सकते हैं, जिसे आप load चाहते हैं। उदाहरण:

node { 
    // first repository 
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory1']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo1.git']]]) 
    // second repository 
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory2']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo2.git']]]) 
    // run first script 
    load 'subdirectory1/Jenkinsfile' 
    // run second script 
    load 'subdirectory2/Jenkinsfile' 
} 
+1

'*/master' अधिक पूरी तरह से' http पर Jenkinsfile डीएसएल संदर्भ में समझाया गया है का अर्थ: // jenkinshost: 8080/कार्यप्रवाह-सीपीएस-snippetizer/dslReference' –

14

एकल पाइप लाइन के भीतर कई Git संग्रह से निपटने के लिए एक और सुरुचिपूर्ण समाधान at this thread पाया जा सकता है।

node { 
    dir('RepoOne') { 
     git url: 'https://github.com/somewhere/RepoOne.git' 
    } 
    dir('RepoTwo') { 
     git url: 'https://github.com/somewhere/RepoTwo.git' 
    } 

    sh('. RepoOne/build.sh') 
    sh('. RepoTwo/build.sh') 
} 
संबंधित मुद्दे