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




version-control hudson (7)

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

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


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

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

मूल उत्तर

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

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

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


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

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

git config --global user.name "Jenkins"
git config --global user.email "[email protected]"

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

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

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

# Git untracked files to ignore.

# Site-wide configuration files.
*.xml
# Except root configuration.
!config.xml

# 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 चलाएं।


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

# 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

अधिक जानकारी के लिए https://gist.github.com/780105 और http://bit.ly/i58rg2 देखें।


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

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

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

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

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


मार्क ( https://.com/a/4066654/142207 ) से उत्तर एसवीएन और गिट के लिए काम करना चाहिए (हालांकि गिट कॉन्फ़िगरेशन मेरे लिए काम नहीं करता है)।

लेकिन अगर आपको Mercurial repo के साथ काम करने की ज़रूरत है, तो निम्न स्क्रिप्ट के साथ नौकरी बनाएं:

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

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

script:
    - make
    - make test

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


से जवाब से प्रेरित एक और सटीक :

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

यह .xml कॉन्फ़िगरेशन फ़ाइलों और .gitignore को छोड़कर सब कुछ अनदेखा करता है। ( में अंतर यह है कि यह सभी शीर्ष-स्तरीय निर्देशिकाओं ( !*/ ) जैसे logs/ cache/ इत्यादि को "अनजान" नहीं करता है)







jenkins-plugins