2017-02-22 5 views
8

उदाहरण के लिए:सभी परियोजनाओं के लिए टेम्पलेट जेनकिन्सफाइल

मेरे पास 30 मल्टीब्रैंच गिट परियोजनाएं हैं। सभी परियोजनाओं के पास अपनी जेनकिन्सफाइल है। और अचानक मुझे एक अच्छी जेनकींस प्लगइन मिलती है जिसे मैं सभी परियोजनाओं के लिए जोड़ना चाहता हूं। यह सभी परियोजनाओं पर ऐसा करने के लिए दर्द है और यह समय की एक बड़ी बर्बादी है।

क्या टेम्पलेट जेनकिन्सफाइल जैसे somethink बनाना संभव है जो प्रोजेक्ट जेनकिन्सफाइल या somethink के लिए रैपर की तरह कुछ होगा जो मुझे 30 स्थानों के बजाय 1 स्थान में परिवर्तन करने की संभावना देता है?

stage { 
...} 
timestamps { 
    <include rest of stages definied in projects> 
} 
stage { 
... } 

खाका फ़ाइल जो कुछ रेपो में है इस तरह के लिए देखा जाता है:

मैं क्या चाहते हैं ऐसा ही कुछ है। सभी परियोजनाओं के अपने स्वयं के चरणों को परिभाषित किया गया है जो टेम्पलेट जेनकिन्सफाइल के बीच में शामिल हैं और परियोजना में परिभाषित हैं।

तो परियोजना में Jenkinsfile करना होगा: रिपोजिटरी से

  • लोड टेम्पलेट
  • टेम्पलेट के बीच में डाल चरणों Jenkinsfile
+0

संबंधित उदाहरण [जेनकींस पाइपलाइन टेम्पलेट] (https://stackoverflow.com/a/44070069/542251) – Liam

उत्तर

4

आप इस्तेमाल कर सकते हैं:

  • Config File Provider Plugin using the configuration files in Jenkins Pipelines :

    node { 
        ... 
        configFileProvider(
        [configFile(fileId: 'jenkinsfile-template', ...)]) { 
         ... 
        } 
        ... 
    } 
    
  • load: Evaluate a Groovy source file into the Pipeline script:

    कार्यक्षेत्र में एक फ़ाइल नाम लेता है और ग्रूवी स्रोत पाठ के रूप में यह चलता है।

  • Shared Libraries:

    अक्सर यह विभिन्न परियोजनाओं के बीच पाइपलाइन के कुछ हिस्सों साझा करने के लिए अतिरेक को कम करने और कोड रखना "DRY" के लिए उपयोगी है।

    पाइपलाइन को "साझा पुस्तकालय" बनाने के लिए समर्थन है जिसे बाहरी स्रोत नियंत्रण भंडारों में परिभाषित किया जा सकता है और मौजूदा पाइपलाइनों में लोड किया जा सकता है।

+0

मुझे लगता है कि मैं इसका कुछ उपयोग कर सकता हूं। मेरा विचार: प्रोजेक्ट में जेनकिन्सफाइल और उदाहरण के लिए जेनकिन्सफाइल_प्रोजेक्ट होगा। सामान्य जेनकिन्सफाइल साझा पुस्तकालयों या configFile के उपयोग के साथ जेनकिन्सफाइल_टेम्प्लेट लोड करेगा। उस टेम्पलेट में% जैसे कुछ चरित्र होंगे और बैश स्क्रिप्ट के उपयोग के साथ मैं इसे जेनकिन्सफाइल_प्रोजेक्ट के साथ बदल दूंगा। वह विलय जेनकिन्सफाइल मैं बिल्ड फ़ोल्डर में रखूंगा। इसके बाद जेनकिन्सफाइल लोड लोड कमांड के माध्यम से लोड हो जाएगा और रन किया जाएगा। – Kapitalny

5

जैसा कि मैंने हमेशा कहते हैं,

दोस्त न दें मित्र टेम्पलेट कोड।

यह आमतौर पर कोड लिखने का मेरा अंतिम उपाय है जो बदले में अधिक कोड उत्पन्न करता है। इसके अलावा, यह आपके उपयोग के मामले में उपयोगी नहीं है।

आप जो प्रभावी ढंग से पूछ रहे हैं वह है, "मेरे पास कोड है जो मैं 30 जेनकिन्सफाइल के बीच साझा करना चाहता हूं"। कोड साझा करने का सबसे अच्छा तरीका, साझा पुस्तकालय बनाने और कोड से इसका उपयोग करने के लिए है।

सौभाग्य से, this concept is fully supported in Jenkinsfiles। मैं आपके उपयोग के मामले के लिए अत्यधिक उपयोग की सलाह देता हूं।लिंक में परिचय पैराग्राफ़ ऊपर दिए गए से:

पाइपलाइन के रूप में एक संगठन में अधिक से अधिक परियोजनाओं के लिए अपनाई गई है, आम पैटर्न में उभरने की संभावना है। अक्सरपाइपलाइनों के हिस्सों को अनावश्यकता को कम करने और कोड "DRY" रखने के लिए विभिन्न परियोजनाओं के बीच साझा करना उपयोगी होता है।

पाइपलाइन "साझा पुस्तकालय" जो हो बाहरी स्रोत नियंत्रण खजाने में परिभाषित किया गया और मौजूदा पाइपलाइन में लोड कर सकते हैं बनाने के लिए समर्थन हासिल है।

फिर, लाइब्रेरी को अपडेट करें और इसका उपयोग करने वाले सभी जेनकिन्सफाइल भी अपडेट किए जाएंगे। आप अपनी साझा लाइब्रेरी का संस्करण कर सकते हैं, और सेट अप डीबग करना बहुत आसान होगा।

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