जेनकिंस सीआई: एसवीएन कमिट पर बिल्ड को कैसे ट्रिगर किया जाए


79

प्लगइन्स और प्लगइन की क्या विशेषताएं हैं जो मुझे अपने जेनकींस की नौकरी पाने के लिए सेट करने की आवश्यकता है ताकि किसी भी समय कोड को बनाने के लिए एक SVK प्रोजेक्ट के लिए प्रतिबद्ध हो?

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


जवाबों:


86

इस बारे में जाने के दो तरीके हैं:

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

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

  2. अपनी रिपॉजिटरी को एक पोस्ट-कम हुक के लिए कॉन्फ़िगर करें जो जेनकिंस को सूचित करता है कि एक बिल्ड को शुरू करने की आवश्यकता है। यहां "पोस्ट-कमिट हुक" अनुभाग में ऐसा करने का विवरण

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


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

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

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

@UnderDog यदि आप उस बिंदु पर परिपक्व हो गए हैं, जहां आपके पास मावेन में पोस्ट-कम ट्रिगर है, तो मैं एक समाधान पसंद करता हूं, जो पोस्ट-कमिट ट्रिगर में विशेष "कुंजी शब्द" की तलाश करता है और उन्हें खोजने पर, जेनकिन्स को न बताने का विरोध करता है सर्वर एक नया निर्माण शुरू करने के लिए। उदाहरण के लिए "^ DONTBUILD -।" का प्रयोग "डॉन्ट बिल्ड" ध्वज के रूप में किया जा सकता है यदि यह प्रतिबद्ध है।
एडविन बक

@mxdsp लिंक को अपडेट किया। यह पुराने वैंडिस्को के रूप में बहुत सुंदर नहीं है, लेकिन यह काम कर देगा। धन्यवाद!
एडविन बक

2

आपको केवल एक प्लगइन की आवश्यकता है जो कि सबवर्सन प्लगइन है।

फिर बस, जेनकिंस में जाएं → job_name → बिल्ड ट्रिगर सेक्शन → (i) ट्रिगर बिल्ड दूरस्थ रूप से (यानी, स्क्रिप्ट से) प्रमाणीकरण टोकन: Token_name

एसवीएन सर्वर के हुक डायरेक्टरी पर जाएं, और फिर नीचे दिए गए कमांड को फायर करने के बाद:

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. vi post-commit

    नोट: सभी लाइनों पर टिप्पणी की जानी चाहिए नीचे अंतिम पंक्ति जोड़ें

सिंटैक्स (लिनक्स उपयोगकर्ताओं के लिए):

/usr/bin/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name

सिंटैक्स (विंडोज उपयोगकर्ता के लिए):

C:/curl_for_win/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name

यह उत्तर कमोबेश इसी उत्तर के समान है ।
पीटर मोर्टेंसन

1

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

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

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

आप GitHub से मेरी स्क्रिप्ट देख सकते हैं ।


-1

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

hooksफ़ोल्डर में पोस्ट-कम हुक स्क्रिप्ट रखो , wget_folderअपने C: \ ड्राइव में एक बनाएँ , और 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इस मुद्दे के बारे में जानने के लिए अंत में भी जोड़ सकते हैं और पोस्ट-पोस्ट हुक स्क्रिप्ट चल रही है या नहीं।

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