जैसा कि " मतदान मरना चाहिए: जेनकिंस को ट्रिगर हुक से बनाता है ", आप एक नई प्रतिबद्धता के जेनकींस को सूचित कर सकते हैं:
नवीनतम Git प्लगइन 1.1.14 (जो मैं अभी जारी करता हूं) के साथ, अब आप इसे और अधिक> आसानी से निम्नलिखित कार्यों को निष्पादित करके कर सकते हैं:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
यह उन सभी नौकरियों को स्कैन करेगा जो निर्दिष्ट URL की जांच करने के लिए कॉन्फ़िगर किए गए हैं, और यदि वे भी मतदान के साथ कॉन्फ़िगर किए गए हैं, तो यह तुरंत मतदान को ट्रिगर करेगा (और यदि वह एक निर्माण के लायक परिवर्तन पाता है, तो बदले में एक निर्माण चालू हो जाएगा। )
यह एक स्क्रिप्ट को उसी तरह रहने की अनुमति देता है जब नौकरी जेनकिंस में आती है और जाती है।
या यदि आपके पास एकल रिपॉजिटरी होस्ट एप्लिकेशन (जैसे गिटोसिस) के तहत कई रिपॉजिटरी हैं, तो आप सभी रिपॉजिटरी के साथ एक एकल पोस्ट-प्राप्त हुक स्क्रिप्ट साझा कर सकते हैं। अंत में, इस URL को सुरक्षित जेनकींस के लिए भी प्रमाणीकरण की आवश्यकता नहीं है, क्योंकि सर्वर सीधे उस चीज़ का उपयोग नहीं करता है जिसे ग्राहक भेज रहा है। यह सत्यापित करने के लिए मतदान चलता है कि वास्तव में एक निर्माण शुरू होने से पहले एक बदलाव है।
जैसा कि यहां बताया गया है , अपने जेनकींस सर्वर के लिए सही पते का उपयोग करना सुनिश्चित करें:
चूँकि हम Jenkins को स्टैंडअलोन वेबसर्वर के रूप में पोर्ट 8080 पर चला रहे हैं, URL /jenkins
इस तरह से बिना होना चाहिए :
http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git
उस अंतिम बिंदु को सुदृढ़ करने के लिए, ptha टिप्पणियों में जोड़ता है :
यह स्पष्ट हो सकता है, लेकिन मेरे पास इसके मुद्दे थे:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.
यूआरएल पैरामीटर बिल्कुल मेल खाना चाहिए क्या आप में है भंडार यूआरएल अपने जेनकींस नौकरी की।
उदाहरणों की नकल करते समय मैंने प्रोटोकॉल को छोड़ दिया, हमारे मामले में ssh://
, और यह काम नहीं किया।
आप एक सरल पोस्ट-प्राप्त हुक का उपयोग कर सकते हैं जैसे " जेनकिंस और जीआईटी का उपयोग करके पुश आधारित बिल्ड "
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
कॉन्फ़िगर करें कि आपका जेनकिंस जॉब "ट्रिगर को दूरस्थ रूप से बनाता है" और एक प्रमाणीकरण टोकन का उपयोग करने में सक्षम हो ( 1qaz2wsx
इस उदाहरण में)।
हालांकि, यह एक परियोजना-विशिष्ट स्क्रिप्ट है, और लेखक ने इसे सामान्य बनाने के तरीके का उल्लेख किया है।
पहला समाधान आसान है क्योंकि यह प्रमाणीकरण या किसी विशिष्ट परियोजना पर निर्भर नहीं करता है।
मैं परिवर्तन सेट में जांचना चाहता हूं कि क्या कम से कम एक जावा फ़ाइल है जिसमें निर्माण शुरू होना चाहिए।
मान लीजिए कि डेवलपर्स ने केवल XML फ़ाइलों या संपत्ति फ़ाइलों को बदल दिया, तो निर्माण शुरू नहीं होना चाहिए।
असल में, आपकी स्क्रिप्ट का निर्माण कर सकते हैं:
git notes
पहले कॉल पर 'बिल्ड' नोट्स (देखें ) डालें
- बाद की कॉल पर,
HEAD
बिल्ड के लिए अपनी शाखा के उम्मीदवार और git notes
'बिल्ड' ( git show refs/notes/build
): द्वारा संदर्भित कमिट के बीच कमिट की सूची को पकड़ो git diff --name-only SHA_build HEAD
।
- आपकी स्क्रिप्ट उस सूची को पार्स कर सकती है और यह तय कर सकती है कि उसे बिल्ड के साथ चलना है या नहीं।
- किसी भी स्थिति में, अपने
git notes
' build
' को बनाने / स्थानांतरित करने के लिए HEAD
।
मई २०१६: cwhsu टिप्पणियों में निम्नलिखित संभावित अंक की ओर इशारा करता है:
curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN
यदि आप अपने आइटम में ट्रिगर कॉन्फिगर सेट करते हैं तो आप इसका उपयोग कर सकते हैं
जून 2016, पोलरेत्तो टिप्पणियों में बताते हैं :
मैं यह जोड़ना चाहता था कि केवल शेल स्क्रिप्टिंग के साथ आप मैन्युअल url कॉन्फ़िगरेशन से बच सकते हैं, खासकर यदि आपके पास एक सामान्य निर्देशिका के तहत कई रिपॉजिटरी हैं।
उदाहरण के लिए मैंने रेपो नाम प्राप्त करने के लिए इन पैरामीटर विस्तार का उपयोग किया
repository=${PWD%/hooks};
repository=${repository##*/}
और फिर इसका उपयोग करें जैसे:
curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository