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


140

मैं हडसन / जेनकिंस के लिए नया हूं और सोच रहा था कि क्या हडसन की कॉन्फ़िगरेशन फ़ाइलों को स्रोत नियंत्रण में जांचने का कोई तरीका है।

आदर्श रूप से मैं यूआई में कुछ बटन पर क्लिक करने में सक्षम होना चाहता हूं जो कहता है कि 'कॉन्फिगरेशन सेव करें' और हडसन कॉन्फिगरेशन फाइल्स को सोर्स कंट्रोल में चेक करें।


या आप मांग पर Git रेपो में उन सूचनाओं को संग्रहीत कर सकते हैं: नीचे मेरा उत्तर देखें
VonC


जांचें: जेनकिंस फ़ाइलों की संरचना के लिए HUDSON_HOME निर्देशिका
kenorb

जवाबों:


62

सबसे उपयोगी उत्तर

SCM सिंक कॉन्फ़िगरेशन प्लगइन नामक एक प्लगइन है


मूल उत्तर

एक समान प्रश्न के मेरे उत्तर पर एक नज़र डालें । मूल विचार xml-files में परिवर्तन का पता लगाने के लिए filesystem-scm-plugin का उपयोग करना है। आपका दूसरा भाग एसवीएन में बदलाव के लिए प्रतिबद्ध होगा।

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

EDIT 2011-01-10 इस बीच एक नया प्लगइन है: SCM सिंक कॉन्फ़िगरेशन प्लगइन । वर्तमान में यह केवल तोड़फोड़ और गिट के साथ काम करता है, लेकिन अधिक रिपॉजिटरी के लिए समर्थन की योजना बनाई गई है। मैं संस्करण 0.0.3 के बाद से इसका उपयोग कर रहा हूं और इसने अब तक अच्छा काम किया है।


2
मैं अलग होने की भीख माँगता हूँ: यदि आप git का उपयोग करते हैं और एक जटिल वातावरण में काम करते हैं तो प्लगइन की कुछ बड़ी कमजोरियाँ हैं: 'यदि आप Git का उपयोग करते हैं तो आपको डिफ़ॉल्ट नाम के साथ SSH कुंजी का उपयोग करना चाहिए। यह "id_rsa" है। SCM सिंक में ssh कुंजी पथ निर्दिष्ट करने का विकल्प नहीं है। एससीएम सिंक, जेनकिंस प्रक्रिया के मालिक की घर निर्देशिका से .sh / id_rsa का उपयोग करता है। ' [ wiki.jenkins-ci.org/display/JENKINS/… से
बेन हचिसन

2
SCM सिंक कॉन्फ़िगरेशन प्लगइन सबवर्सन प्लगइन> = 2.0 (प्रति मुद्दों के साथ असंगत है ।jenkins-ci.org/browse/JENKINS-21640 )।
निक जोन्स

1
मैं इस विशेष प्लगइन का उपयोग करने की सिफारिश नहीं करूंगा, पोस्ट इंस्टॉलेशन जेनकिन्स ऊपर नहीं आया। इस प्लगइन में बहुत सारे कीड़े लग रहे हैं और इसे अपग्रेड / फ़िक्स बहुत बार नहीं मिलता है। "एससीएम सिंक कॉन्फ़िगरेशन प्लगइन" से बचें
विक्रमवी

1
@vikramvi, आप किस विकल्प का प्रस्ताव कर रहे हैं?
इगोर रोड्रिगेज

1
@IgorRodriguez प्रोजेक्ट कोड की तुलना में जेनकींस जॉब में अक्सर बदलाव नहीं होते हैं; मैं परिवर्तन करने के लिए मैन्युअल रूप से परिवर्तन कर रहा हूँ।
विक्रमवी

38

ध्यान दें कि ओपी के प्रश्न जनवरी 2010 की तुलना में वोगेला का हाल ही में (जनवरी 2014) है, और इस पर अलग-अलग विचार हैं।
विचार करें कि SCM सिंक कॉन्फ़िगरेशन प्लगइन बहुत सारे कमिट उत्पन्न कर सकता है।
इसलिए, एक प्लगइन और एक स्वचालित प्रक्रिया पर निर्भर होने के बजाय, वह मैन्युअल रूप से उसी सुविधा का प्रबंधन करता है:

गिट में जेनकींस की नौकरी की जानकारी संग्रहीत

मुझे कमिट्स की मात्रा थोड़ी भारी लगी, इसलिए मैंने मैन्युअल रूप से कमेंट्स को नियंत्रित करने और केवल जॉब की जानकारी को बचाने का फैसला किया, न कि जेनकिंस कॉन्फ़िगरेशन को।
अपने जेनकींस जॉब्स डायरेक्टरी (उबंटू:) में स्विच करें /var/lib/jenkins/jobsऔर git init"कमांड" करें।

मैंने .gitignoreकेवल गिट नौकरियों की जानकारी संग्रहीत करने के लिए निम्नलिखित फ़ाइल बनाई :

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

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

अल्बर्टो वास्तव में के रूप में अच्छी तरह से जोड़ने की सलाह देते हैं $JENKINS_HOME:

  • जेनकिन्स का स्वयं का विन्यास ( config.xml),
  • jenkins प्लगइन्स कॉन्फ़िगर करता है ( hudson*.xml) और
  • उपयोगकर्ता कॉन्फ़िगर ( users/*/config.xml)

क्या उपयोगकर्ता को संग्रहीत नहीं किया जाएगा, सादा एपीआई एपीआई टोकन को अपने में कॉन्फ़िगर करता है config.xml?
बून

@ बून मुझे वास्तव में नहीं पता है, क्योंकि मुझे हाल ही में एपीआई टोकन का उपयोग नहीं करना पड़ा। आपके लिए यह एक अच्छा प्रश्न हो सकता है।
VonC

2
कुछ शोध के बाद, पता चला कि एपीआई टोकन एक्सएमएल में एन्क्रिप्ट किए गए हैं, इसलिए यह सुरक्षा जोखिम पैदा नहीं करेगा।
बून

19

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

# Miscellaneous Hudson litter
*.log
*.tmp
*.old
*.bak
*.jar
*.json

# Generated Hudson state
/.owner
/secret.key
/queue.xml
/fingerprints/
/shelvedProjects/
/updates/

# Tools that Hudson manages
/tools/

# Extracted plugins
/plugins/*/

# Job state
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber

देखें इस GitHub सार और इस ब्लॉग पोस्ट अधिक जानकारी के लिए।


14

एक नया SCM सिंक कॉन्फिगरेशन प्लग-इन है, जिसमें वही है जो आप देख रहे हैं।

SCM सिंक कॉन्फ़िगरेशन हडसन प्लगइन 2 मुख्य विशेषताओं के उद्देश्य से है:

  • SCM रिपॉजिटरी के साथ अपने config.xml (और अन्य ressources) हडसन फ़ाइलों को सिंक रखें
  • हर संदेश पर प्रतिबद्ध संदेशों के साथ परिवर्तन (और लेखक) ट्रैक करें

मैंने वास्तव में अभी तक यह कोशिश नहीं की है, लेकिन यह आशाजनक लगता है।


3
मुझे एससीएम सिंक कॉन्फ़िगरेशन प्लग-इन के साथ काम करने में दिलचस्पी होगी, मैंने कई कॉन्फ़िगरेशन की कोशिश की, और मैं बस इसे काम नहीं कर सका (और लॉग में त्रुटि संदेश सबसे अच्छा नहीं था)।
सेबेस्टियानो पिला

8

आप जेनकिंस होम फोल्डर (जैसे /var/lib/jenkins) में विन्यास फाइल पा सकते हैं ।

वीसीएस में रखने के लिए, पहले जेनकिन्स ( sudo su - jenkins) के रूप में लॉगिन करें और इसकी गिट क्रेडेंशियल बनाएं:

git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"

फिर प्रारंभिक फ़ाइलों को जोड़ें, जोड़ें और प्रतिबद्ध करें जैसे:

git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a

.gitignoreनिम्न फ़ाइलों को अनदेखा करने के लिए बनाने पर भी विचार करें (आवश्यकतानुसार अनुकूलित करें):

# Git untracked files to ignore.

# Cache.
.cache/

# Fingerprint records.
fingerprints/

# Working directories.
workspace/

# Secret files.
secrets/
secret.*
*.enc
*.key
users/
id_rsa

# Plugins.
plugins/

# State files.
*.state

# Job state files.
builds/
lastStable
lastSuccessful
nextBuildNumber

# Updates.
updates/

# Hidden files.
.*
# Except git config files.
!.git*
!.ssh/

# User content.
userContent/

# Log files.
logs/
*.log

# Miscellaneous litter
*.tmp
*.old
*.bak
*.jar
*.json
*.lastExecVersion

फिर इसे जोड़ें git add .gitignore:।

जब किया जाता है, तो आप जॉब कॉन्फिगर फाइलें जोड़ सकते हैं, जैसे

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

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


जब जेनकिंस फाइलें अपडेट की जाती हैं, तो आपको उन्हें फिर से लोड करना होगा ( डिस्क से पुनः लोड कॉन्फ़िगरेशन ) या reload-configurationजेनकिंस सीएलआई से चलाएं ।


साइट-वाइड कॉन्फ़िगरेशन को बाहर क्यों रखा गया है? मैं देख रहा हूं कि अन्य उत्तर उन्हें शामिल करते हैं।
विंसेंट बेल्टमैन

@kenorb मैं इसे फिर से बाहर करूँगा। ऊपर एक टिप्पणी लाइन *.xmlनियम को नहीं बदलता है और git निर्देशिका से सभी xml फ़ाइलों को अनदेखा करता है , यहाँ चुपचाप किसी भी नई परियोजना की उपेक्षा करता है । config.xmljobsgit status
मिकोलासन

5

जिस तरह से मैं पसंद करता हूं वह जेनकिंस होम फ़ोल्डर में सब कुछ को बाहर करने के लिए है जो कॉन्फ़िगरेशन फ़ाइलों को छोड़कर आप वास्तव में अपने वीसीएस में होना चाहते हैं। यहां वह .gitignoreफ़ाइल है जिसका मैं उपयोग करता हूं:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

यह *( !) .gitignore, नौकरियों / परियोजनाओं, प्लगइन और अन्य महत्वपूर्ण और उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइलों को छोड़कर ( ) को छोड़कर सभी को अनदेखा करता है ।

यह pluginsफ़ोल्डर को शामिल करने पर भी विचार करने योग्य है । सक्रिय रूप से अपडेट किए गए प्लगइन्स को शामिल किया जाना चाहिए ...

मूल रूप से यह समाधान भविष्य के जेनकींस / हडसन अपडेट के लिए आसान बनाता है क्योंकि नई फाइलें स्वचालित रूप से दायरे में नहीं हैं। आप सिर्फ उस चीज को प्राप्त करते हैं जो आप वास्तव में चाहते हैं।


5

एक और अधिक सटीक .gitignore, नेपा से उत्तर से प्रेरित :

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

यह .xmlकॉन्फ़िगर फ़ाइलों और .gitignoreखुद को छोड़कर सब कुछ अनदेखा करता है। (करने के लिए अंतर Nepa 's .gitignoreहै कि यह "अनदेखा न करें" सभी उच्च-स्तरीय निर्देशिका (नहीं करता है !*/) की तरह logs/, cache/आदि)


2

मार्क से जवाब ( https://stackoverflow.com/a/4066654/142207 ) SVN और Git के लिए काम करना चाहिए (हालांकि Git कॉन्फ़िगरेशन ने मेरे लिए काम नहीं किया)।

लेकिन अगर आपको मर्क्यूरियल रेपो के साथ काम करने की आवश्यकता है, तो निम्नलिखित स्क्रिप्ट के साथ एक नौकरी बनाएं:

hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
    hg commit -m "Scheduled commit" -u fill_in_the@blank.com
    hg push
fi

2

मैंने एक प्लगइन लिखा है जो आपको स्रोत नियंत्रण में अपने जेनकींस निर्देशों की जांच करने देता है। बस .jenkins.ymlसामग्री के साथ एक फ़ाइल जोड़ें :

script:
    - make
    - make test

और जेनकिंस यह करेंगे:

यहां छवि विवरण दर्ज करें


0

मैंने हडसन में पूरी तरह से जाँच की, आप इसे एक शुरुआती बिंदु के रूप में उपयोग कर सकते हैं https://github.com/morkeleb/continuous-delivery-with-hudson

पूरे हडसन को गिट में रखने के लाभ हैं। सभी कॉन्फ़िगरेशन परिवर्तन लॉग किए गए हैं और आप एक मशीन पर टेस्टअप का आसानी से परीक्षण कर सकते हैं और फिर गिट पुल का उपयोग करके अन्य मशीन को अपडेट कर सकते हैं।

हम काम पर हमारे हडसन निरंतर वितरण सेटअप के लिए एक बॉयलरप्लेट के रूप में इसका इस्तेमाल करते थे।

सादर मोर्टन

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