2012-04-04 32 views
64

पर निर्माण को ट्रिगर कैसे करें मुझे जेएनकिन्स नौकरी को किसी भी समय ट्रिगर करने के लिए प्लगइन और प्लगइन सुविधाओं को सेट करने की आवश्यकता है, किसी भी समय एसवीएन प्रोजेक्ट के लिए कोड प्रतिबद्ध है? मैंने मानक एसवीएन प्लगइन के साथ-साथ एसवीएन टैगिंग प्लगइन दोनों स्थापित किए हैं लेकिन ट्रिगर कॉन्फ़िगरेशन की अनुमति देने वाली कोई भी नई विशेषताएं नहीं दिखती हैं।जेनकींस सीआई: एसवीएन प्रतिबद्धता

मैं कार्यान्वयन में इसकी आसानी की वजह से शुरू में पहला विकल्प की सलाह देते हैं:

+0

संभव डुप्लिकेट http : //stackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated

उत्तर

71

इस बारे में जाने के लिए दो तरीके हैं। एक बार जब आप अपनी बिल्ड प्रक्रियाओं में परिपक्व हो जाते हैं, तो दूसरे पर स्विच करें।

  1. यह देखने के लिए कि क्या परिवर्तन हुआ है, भंडार को मतदान करें। यदि एक ही मतदान अंतराल के भीतर दो काम करता है तो यह एक प्रतिबद्धता को छोड़ सकता है। Description of how to do so here, चौथे स्क्रीनशॉट को नोट करें जहां आप नौकरी पर कॉन्फ़िगरेशन मतदान (क्रॉन्टाब-जैसी कॉन्फ़िगरेशन के साथ) पर आधारित "ट्रिगर बनाएं" पर कॉन्फ़िगर करते हैं।

  2. अपने भंडार को एक पोस्ट-प्रतिबद्ध हुक रखने के लिए कॉन्फ़िगर करें जो जेनकिंस को सूचित करता है कि निर्माण को शुरू करने की आवश्यकता है। Description of how to do so here, अनुभाग में "के बाद प्रतिबद्ध हुक"

SVN टैग सुविधा मतदान का हिस्सा नहीं है, यह एक टैग करने के लिए वर्तमान स्रोत कोड के "सिर" को बढ़ावा देने का हिस्सा है, एक स्नैपशॉट के लिए निर्माण। यह आपको जेनकिन्स बुड # 32 को एसवीएन टैग/टैग/बिल्ड -32 (या कुछ समान) के रूप में संदर्भित करने की अनुमति देता है।

+0

पोस्ट-प्रतिबद्ध हुक रॉक। तेज़ प्रतिक्रिया समय, और (पैमाने पर) आपकी सीआई प्रणाली सैकड़ों परिवर्तन लॉग अनुरोधों के साथ स्रोत रेपो को क्रश नहीं करती है। – EricMinick

+4

@EricMinick वे बहुत अच्छे हैं, लेकिन कभी-कभी वे सीआई सर्वर पिघल सकते हैं, अगर आपको थोड़े समय में बहुत कम काम मिलते हैं। यह पाठ्यक्रमों के लिए सभी घोड़े हैं, और यह जानना मुश्किल है कि आपकी विधि प्रक्रिया वर्तमान में कैसे कार्य कर रही है इसका विश्लेषण किए बिना कौन सी विधि अनुकूल है। –

+0

@ एडविनबक: क्या आपको पता है कि जेनकिंस को केवल चुनिंदा काम करने के लिए कॉन्फ़िगर करने का कोई तरीका है या नहीं? मैं समझाऊंगा, मेरे पास एक कछुआ एसवीएन है, और एक जेनकींस प्रोजेक्ट है जो भंडार को मतदान करता रहता है। अब अगर मैं चाहता हूं कि जो प्रतिबद्धता मैं करता हूं उसे जेनकींस को ट्रिगर नहीं करना चाहिए, क्या ऐसा करने का कोई तरीका है? –

0

मैंने जेनकिंस निर्माण को ट्रिगर करने के लिए कुछ बैश के साथ अजगर का उपयोग करके एक टूल बनाया। मूल रूप से आप से इन दोनों मूल्य इकट्ठा करने के लिए है के बाद प्रतिबद्ध है जब एक प्रतिबद्ध मारा SVN सर्वर:

REPOS = "$ 1" REV = "$ 2"

तो फिर तुम का उपयोग करें "svnlook dirs-बदल $ 1 -r $ 2 "जिस मार्ग को अभी किया गया है उसे पाने के लिए। उसके बाद आप यह जांच सकते हैं कि आप कौन सा भंडार बनाना चाहते हैं। कल्पना कीजिए कि आपके पास सौ हजार परियोजनाएं हैं। आप पूरी रिपोजिटरी सही नहीं देख सकते हैं?

आप से github

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

-1

आप एक पोस्ट-प्रतिबद्ध हुक का उपयोग कर सकते हैं।

पोस्ट-प्रतिबद्ध हुक स्क्रिप्ट को hooks फ़ोल्डर में रखें, अपने C: \ ड्राइव में wget_folder बनाएं, और इस फ़ोल्डर में wget.exe फ़ाइल डालें। बुलाया फ़ाइल में निम्न कोड जोड़ें post-commit.bat

SET REPOS=%1 
SET REV=%2 

FOR /f "tokens=*" %%a IN ( 
'svnlook uuid %REPOS%' 
) DO ( 
SET UUID=%%a 
) 

FOR /f "tokens=*" %%b IN ( 
'svnlook changed --revision %REV% %REPOS%' 
) DO ( 
SET POST=%%b 
) 

echo %REPOS% ----- 1>&2 

echo %REV% -- 1>&2 

echo %UUID% --1>&2 

echo %POST% --1>&2 

C:\wget_folder\wget^ 
    --header="Content-Type:text/plain"^ 
    --post-data="%POST%"^ 
    --output-document="-"^ 
    --timeout=2^ 
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%  

जहां टेस्ट = काम

echo के नाम मुद्दे के बारे में पता करने के लिए मूल्य को देखने के लिए प्रयोग किया जाता है और आप भी अंत में exit 2 जोड़ सकते हैं और क्या पोस्ट-प्रतिबद्ध हुक स्क्रिप्ट चल रही है या नहीं।

0

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

0

आपको केवल एक प्लगइन की आवश्यकता है जो सबवर्जन प्लगइन है। तो बस jenkins-> job_name- में जाएं> उत्प्रेरक खंड का निर्माण -> (i) उत्प्रेरक दूर से निर्माण (यानी स्क्रिप्ट से) प्रमाणीकरण टोकन: -Token_name

फिर आग के बाद तो SVN सर्वर का हुक निर्देशिका के लिए जाना नीचे दिए गए आदेश: - (ए) सीपी पोस्ट-प्रतिबद्ध.tmpl पोस्ट-प्रतिबद्ध (बी) chmod 777 पोस्ट-प्रतिबद्ध (सी) chown -R www-data: www-data post-commit (डी) vi post- नोट: सभी पंक्तियों पर टिप्पणी की जानी चाहिए अंतिम synta पर नीचे पंक्ति जोड़ें एक्स (उपयोगकर्ता लिनक्स के लिए): -/usr/bin/कर्ल http://username:[email protected]:8081/job/job_name/build?token=Token_name

वाक्य रचना (विंडोज़ उपयोगकर्ता के लिए): - सी:/curl_for_win/कर्ल http://username:[email protected]:8081/job/job_name/build?token=Token_name

[उत्प्रेरक हडसन का निर्माण जब SVN प्रतिबद्ध] (की