"Polling must die: triggering Jenkins builds from a git hook" में उल्लेख किया है, आप एक नया की जेनकींस सूचित कर सकते हैं के लिए प्रतिबद्ध के रूप में:
साथ
नवीनतम Git plugin 1.1.14 (है कि मैं अभी-अभी जारी), अब आप बस को क्रियान्वित करते हुए आसानी से इस अधिक> क्या कर सकते हैं निम्न आदेश:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
यह सभी नौकरियों है कि निर्दिष्ट URL की जाँच करने के लिए कॉन्फ़िगर किया गया है स्कैन करेगा, और अगर वे भी मतदान के साथ कॉन्फ़िगर किया गया है, इसे तुरंत मतदान को गति प्रदान करेंगे (और है कि अगर एक परिवर्तन के लायक एक पाता है निर्माण, एक निर्माण बदले में ट्रिगर किया जाएगा।)
यह जॉब्स आने और जेनकींस में जाने पर एक स्क्रिप्ट एक जैसी रहने की अनुमति देता है।
या यदि आपके पास एक ही रिपोजिटरी होस्ट एप्लिकेशन (जैसे कि गिटोसिस) के तहत एकाधिक रिपॉजिटरीज़ हैं, तो आप सभी रिपॉजिटरीज़ के साथ एक पोस्ट-प्राप्त हुक स्क्रिप्ट साझा कर सकते हैं। अंत में, इस यूआरएल को सुरक्षित जेनकींस के लिए भी प्रमाणीकरण की आवश्यकता नहीं है, क्योंकि सर्वर सीधे क्लाइंट भेज रहा है जो कुछ भी उपयोग नहीं करता है। यह पुष्टि करने के लिए मतदान चलाता है कि वास्तव में एक निर्माण शुरू होने से पहले कोई बदलाव होता है।
mentioned here रूप में, अपने जेनकींस सर्वर के लिए सही पते का उपयोग सुनिश्चित करें:
के बाद से हम पोर्ट 8080 यूआरएल /jenkins
बिना किया जाना चाहिए था, इस तरह पर स्टैंडअलोन वेबसर्वर के रूप में चला रहे हैं जेनकींस :
http://jenkins:8080/git/[email protected]:tools/common.git
कि अंतिम बिंदु को सुदृढ़ करने के लिए, ptha कहते हैं in the comments:
यह स्पष्ट हो सकता है, लेकिन मैं के साथ मुद्दों था:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.
यूआरएल पैरामीटर से मेल खाना चाहिए कि वास्तव में क्या आप अपने जेनकींस नौकरी के भंडार यूआरएल में है।
उदाहरणों की प्रतिलिपि करते समय मैंने प्रोटोकॉल को छोड़ दिया, हमारे मामले में ssh://
, और यह काम नहीं किया।
तुम भी "Push based builds using Jenkins and GIT"
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
में की तरह एक साधारण के बाद प्राप्त हुक का उपयोग कर सकते एक प्रमाणीकरण का उपयोग करने के लिए "उत्प्रेरक दूर से बनाता है" में सक्षम हो सकता है और करने के लिए अपने जेनकींस काम कॉन्फ़िगर टोकन (1qaz2wsx
इस उदाहरण में)।
हालांकि, यह एक परियोजना-विशिष्ट लिपि है, और लेखक इसे सामान्यीकृत करने का एक तरीका बताते हैं।
पहला समाधान आसान है क्योंकि यह प्रमाणीकरण या विशिष्ट प्रोजेक्ट पर निर्भर नहीं है।
मैं परिवर्तन है कि क्या कम से कम एक जावा फ़ाइल सेट में जाँच करना चाहते हैं वहाँ का निर्माण शुरू कर देना चाहिए है।
मान लीजिए डेवलपर्स ने केवल एक्सएमएल फाइलों या प्रॉपर्टी फाइलों को बदल दिया है, तो बिल्ड शुरू नहीं होना चाहिए।
मूल रूप से, अपने निर्माण स्क्रिप्ट कर सकते हैं:
- एक 'का निर्माण' नोट्स (
git notes
देखें) पहली कॉल आगामी कॉल पर
- पर डाल दिया, के
HEAD
के बीच प्रतिबद्ध की सूची हड़पने अपने निर्माण के लिए शाखा उम्मीदवार और git notes
'बिल्ड' (git show refs/notes/build
) द्वारा संदर्भित प्रतिबद्धता: git diff --name-only SHA_build HEAD
।
- आपकी स्क्रिप्ट उस सूची को पार्स कर सकती है और यह तय कर सकती है कि इसे निर्माण के साथ आगे बढ़ने की आवश्यकता है या नहीं।
- किसी भी मामले में, अपने
git notes
'build
' को HEAD
पर बनाएं/स्थानांतरित करें।
मई 2016: बाहर in the commentscwhsu अंक निम्नलिखित संभव यूआरएल:
तुम सिर्फ curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN
इस्तेमाल कर सकते हैं अगर आप अपने मद में ट्रिगर config सेट
जून 2016 polaretto अंक बाहर in the comments:
मुझे लगता है कि जोड़ने के लिए शेल पटकथा लेखन की बस थोड़ी साथ आप मैन्युअल यूआरएल विन्यास से बच सकते हैं, खासकर यदि आप एक आम निर्देशिका के अंतर्गत कई खजाने है चाहता था।
उदाहरण के लिए मैं इन पैरामीटर विस्तार इस्तेमाल किया रेपो नाम
repository=${PWD%/hooks};
repository=${repository##*/}
मिलता है और फिर इसे का उपयोग करना चाहते:
curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository
मैंने आपके प्रश्न के दूसरे भाग को संबोधित करने के लिए अपना उत्तर संपादित कर दिया है। – VonC