आप जेनकिंस जॉब्स और मास्टर कॉन्फिग्स का बैकअप कैसे लेते हैं?


56

मैं सभी जेनकिंस नौकरियों का बैकअप लेना चाहता हूं और फाइलों को कॉन्फ़िगर करना चाहता हूं। इसे करने का सबसे आसान तरीका क्या है?


आपने क्या प्रयास किया?
030

1
मैंने यह कोशिश की ।
kenorb

जवाबों:


33

ऐसा करने के कई तरीके हैं, लेकिन सबसे आसान तरीका मुझे लगता है कि जेनकिंस होम फोल्डर का बैकअप है।

आप देख सकते हैं कि आपका जेनकिन्स घर कहां है:

echo $JENKINS_HOME

और उदाहरण के लिए, यदि आप केवल उन नौकरियों का बैकअप लेना चाहते हैं, जिनमें आप जा सकते हैं:

cd $JENKINS_HOME/jobs

और उस फोल्डर के लिए एक बैकअप बनाएं।

वह सभी कॉन्फ़िगरेशन XML फ़ाइलों का एक गुच्छा होगा ।

यदि आप आधिकारिक जेनकींस डॉकटर छवि का उपयोग कर रहे हैं , तो घर पर होगा:

/var/jenkins_home

2
मुझे $JENKINS_HOMEपर्यावरण चर तक पहुँच प्राप्त करने के लिए जेनकींस उपयोगकर्ता पर स्विच करने की आवश्यकता थी : sudo su -s /bin/bash jenkinsऔर फिर echo $JENKINS_HOME, जो मेरे लिए था/var/lib/jenkins
ब्रायस गुइंटा

2
पूरे फोल्डर 'जॉब्स' का बैकअप लेने में समस्या यह है कि जॉब एक्जीक्यूटिव्स को भी कॉपी किया जाएगा - इसका मतलब कई जीबी हो सकता है।
माइक Argyriou

क्या जेनकींस की सेवा फिर से शुरू होनी चाहिए?
शिन मेंग

MacOS में जेनकिन्स होम (होमब्रे डिफ़ॉल्ट स्थापना): ~ / .जेनकिंस
chuckSaldana

30

सभी जॉब्स ( jobs/) और मास्टर कॉन्फिग फाइल्स ( config.xml) जेन्किन्स होम फोल्डर ( JENKINS_HOME) में निम्न संरचना में पाई जा सकती हैं :

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

अधिकांश कॉन्फ़िगरेशन XML प्रारूप में हैं, इसलिए सभी .xmlफ़ाइलों का समर्थन पर्याप्त होना चाहिए।

सभी सेटिंग्स, बिल्ड लॉग, विरूपण साक्ष्य अभिलेखागार JENKINS_HOME निर्देशिका के तहत संग्रहीत किए जाते हैं। बस एक बैक अप बनाने के लिए इस निर्देशिका को संग्रहित करें। इसी तरह, डेटा को पुनर्स्थापित करना केवल बैक अप से JENKINS_HOME निर्देशिका की सामग्री को प्रतिस्थापित करना है।

सर्वर को बंद किए बिना बैक अप लिया जा सकता है, लेकिन जब आप पुनर्स्थापित करते हैं, तो कृपया सर्वर को रोक दें।


लगातार बैकअप के लिए यह अच्छा विकल्प है कि JENKINS_HOMEडायरेक्टरी को गिट रिपॉजिटरी के अंतर्गत रखा जाए ।

उदाहरण के लिए:

cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

और फ़ाइलों को बाहरी रिपॉजिटरी में धकेलना। आप कुछ फ़ाइलों को अनदेखा करने के लिए निम्न .gitignoreफ़ाइल भी जोड़ सकते हैं ।

संबंधित: क्या हडसन / जेनकिंस कॉन्फ़िगरेशन फ़ाइलों को स्रोत नियंत्रण में रखने का एक तरीका है?


आप कितनी बार बैकअप बनाते हैं? क्या आप कोड को स्वचालित रूप से गिट रिपॉजिटरी में धकेल देते हैं? यदि सही है, तो क्या आप एक पुल अनुरोध बनाते हैं जिसे कुछ बैकअप अखंडता जांच करने के लिए मैन्युअल रूप से (मैन्युअल हस्तक्षेप) मर्ज करना पड़ता है?
030

2
@ 030 आमतौर पर कुछ बड़े बदलावों के बाद, जब मुझे पता चलता है कि कॉन्फ़िगरेशन स्थिर है और मुझे इसका बैकअप लेने की आवश्यकता है, क्योंकि जेनकिन्स अक्सर चीजों को तोड़ना पसंद करते हैं, जैसे कि यूनिक्स से विंडोज में स्लेव्स बदलना-सेल्फ, फॉर्म से पासवर्ड हटाना, इसलिए उन्हें git / GitHub में होने से, मैं आसानी से लापता डेटा की तुलना और खोज कर सकता हूं और इसे वापस जोड़ सकता हूं या कुछ विशिष्ट फ़ाइल को वापस ला सकता हूं। इतिहास में बदलाव रखने के लिए कुछ प्लगइन्स हैं, लेकिन मुझे यह उपयोगी नहीं लगा।
kenorb

आप git में पासवर्ड स्टोर करते हैं? क्या आप उन्हें एन्क्रिप्ट करते हैं? क्या आप कोड के रूप में पाइपलाइन उर्फ ​​पाइपलाइन का उपयोग करते हैं?
030

3
@ 030 जेनकिन्स डिफ़ॉल्ट रूप से पासवर्ड / क्रेडेंशियल्स को एन्क्रिप्ट करता है, लेकिन आप उन्हें आसानी से डिक्रिप्ट कर सकते हैं । हालांकि, मास्टर कुंजी (जो बैकअप का हिस्सा नहीं होना चाहिए) या जेनकिंस तक पहुंच के बिना, कोई और नहीं कर सकता। मैं कोड के रूप में पाइपलाइन का उपयोग नहीं कर रहा हूं।
kenorb

Git में इस बैकअप की अखंडता का परीक्षण कैसे करते हैं? जैसे आप एक वर्चुअल मशीन या डॉकटर सिस्टम को स्पिन करते हैं, गिट रेपो को माउंट करते हैं और जांचते हैं कि क्या अभी भी सब कुछ काम करता है?
०३० 0

11

यदि आपकी जेनकिंस नौकरियों को जेनकिंसफाइल में परिभाषित किया गया है, तो आप इसे गिट रिपॉजिटरी में स्टोर कर सकते हैं और इसे पाइप लाइन का उपयोग करके लोड कर सकते हैं ।

दुर्भाग्य से, चूंकि सभी जेनकिन्स प्लगइन्स जेनकिंसफाइल और पाइपलाइन का समर्थन नहीं करते हैं, यदि आप इस प्रारूप में मौजूदा नौकरियों को स्थानांतरित करना चाहते हैं, तो आपको मैन्युअल रूप से नए जेनकिंसफाइल्स बनाने की आवश्यकता होगी।


9

एससीएम समन्वयन कॉन्फ़िगरेशन प्लगइन वास्तव में आप क्या चाहते हैं नहीं करता है। आपके जेनकींस कोर और जॉब कॉन्फिगरेशन का बैकअप लेने के लिए svn या git के साथ काम करता है, जिससे आपको आसानी से ट्रैकिंग मिलती है कि किसने बदलाव किया, साथ ही साथ बैकअप भी।


1
मैं सचमुच JENKINS_HOME फ़ोल्डर को टारगेट करता हूं, लेकिन यह बहुत बेहतर लगता है।
MrMesees

2
यह प्लगइन्स बहुत निष्क्रिय / मृत प्रतीत होता है - क्या यह वास्तव में 2017 के रूप में कार्यात्मक और चालू है?
Tuukka मुस्टोनेन

5

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

डेटा और कॉन्फिगरेशन का बैकअप लेने का एक और तरीका है कि आप अपने जेनकिंस मास्टर सर्वर की डिस्क स्नैपशॉट लें। डिस्क को माउंट करके ऐसा करने का आदर्श तरीका है और जेनकिंस कॉन्फिग डायरेक्टरी को डिस्क माउंट पॉइंट से लिंक करें

इस ब्लॉग पोस्ट में दोनों परिदृश्यों को अच्छी तरह से समझाया गया है । आपको कॉन्फ़िगरेशन के लिए एक बेहतर विचार और कदम मिलेगा।


3

मैं स्क्रिप्ट का उपयोग कर रहा हूं sue445/jenkins-backup-script

यह जेनकींस सेटिंग्स और प्लगइन्स को संग्रहीत करता है जैसे:

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

प्रयोग

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz

3

आप thinBackup प्लगइन की कोशिश कर सकते हैं (भले ही यह सक्रिय रूप से बनाए नहीं रखा गया है) [यदि एक तार्किक बैकअप लेना है तो आप सभी चाहते हैं] (यानी अधिकांश कॉन्फिग xml फाइलें, नौकरी, नोड्स आदि)। बैकअप आकार बहुत बड़ा नहीं होगा।


1

मैं एक Windows सर्वर उदाहरण से दूसरे करने के लिए एक जेनकींस माइग्रेट करने की जरूरत है। अंत में मैं ऐसा करने में कामयाब रहा:

  • जेनकिंस सेवा बंद करें (यदि आप इसे वहन कर सकते हैं)
  • संपूर्ण जेनकिंस फ़ोल्डर की प्रतिलिपि बनाएँ (डिफ़ॉल्ट रूप से C:\Program Files x86\Jenkins)
  • नए उदाहरण पर चिपकाएँ
  • निर्देशिका के अंदर जाओ और भागो jenkins.exe install

यह नई मशीन पर एक सेवा के रूप में ताजा चिपके हुए जेनकींस को पंजीकृत करेगा और 100% समान काम करेगा।

यदि यह काम करता है तो यदि आपको भविष्य की सुरक्षा के लिए बैकअप की आवश्यकता है, तो कहीं जेनकिंस फ़ोल्डर की प्रतिलिपि बनाएँ। यह स्नैपशॉट की तरह काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.