2016-04-25 6 views
16

ऐसा लगता है कि गिटहबपुलरक्वेटबिल्डर जेनकिंस v2.0 पाइपलाइन नौकरियों के साथ संगत नहीं है।गिटहब पुल अनुरोध से जेनकिंस 2.0 पाइपलाइन नौकरी को कैसे ट्रिगर करें

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

उत्तर

1

सबसे सरल GitHub पुल अनुरोध के साथ पाइप लाइन का उपयोग करने के लिए रास्ता नाम Jenkinsfile के तहत अपने भंडार में स्क्रिप्ट डाल करने के लिए और फिर GitHub शाखा स्रोत प्लगइन स्थापित है। Documentation

+0

क्या यह संगठन के सदस्यों के पीआर के लिए या बाहरी योगदानकर्ताओं के पीआर के लिए भी काम करेगा? – elopio

+0

@ एलोपियो, प्लगइन में समान भंडार के साथ-साथ बाहरी भंडारों से पीआरएस के निर्माण को सक्षम/अक्षम करने के विकल्प हैं। यह बिल्कुल ठीक नहीं है कि आप क्या पूछ रहे हैं, लेकिन शायद पर्याप्त पास है। –

+1

पीआरएस परीक्षण और 'जेनकिन्सफाइल' के साथ खेलने के लिए यह आधिकारिक [जेनकिंसी/वर्कफ़्लो-डेमो] (https://hub.docker.com/r/jenkinsci/workflow-demo/) डॉकर छवि है। मैं सोच रहा था कि क्या पीआरएस पर उन अच्छे लाल और हरे रंग की जांच हो सकती है और यह पूरी तरह से संभव है ([उदाहरण यहां] (https://github.com/jenkinsci/docker-workflow-plugin/pull/57)):) और यहां एक [मल्टीब्रैंच वर्कफ़्लोज़ के बारे में उपयोगी पोस्ट] है (https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/) – GabLeRoux

2

संक्षेप में प्रवाह इस तरह जा सकते हैं:

  1. आप कोड के रूप में अपने पाइप लाइन बना सकते हैं और एक फाइल में सहेज अपनी परियोजना के रूट निर्देशिका में Jenkinsfile कहा जाता है। उस कोड का वर्णन करना चाहिए कि आपकी परियोजना कैसे बनाई जाएगी। उदाहरण के लिए यहां देखें: https://jenkins.io/doc/pipeline/examples/

  2. फिर आपको अपने जेनकींस में एक नया "मल्टीब्रैंच पाइपलाइन प्रोजेक्ट" आइटम बनाना चाहिए। आपको इसे चरण 1 के अपने रेपो को स्कैन करने के लिए सेट अप करना चाहिए।

  3. जब भी आपको अपने चरण 1 रेपो पर एक नई पीआर शाखा खोला जाता है, तो शाखा चेक-आउट की जाएगी और जेनकिन्सफाइल के अनुसार बनाई जाएगी इसके साथ निर्देश शामिल हैं। आप जो भी बनते हैं और जब आप चाहें तो अधिक स्थितियां स्थापित कर सकते हैं।

नोट्स:

  1. "Multibranch पाइपलाइन परियोजना" उदाहरण के प्रलेखन: https://jenkins.io/doc/book/pipeline-as-code/ (Multibranch पाइपलाइन परियोजनाओं के लिए नीचे स्क्रॉल)

  2. मन में है कि प्लगइन हो रही एक निर्माण करने के लिए रखें पीआर पर सराहना करने के बाद पीआर काम नहीं करता है। यहां एक विश्लेषण का विश्लेषण किया गया है: https://github.com/jenkinsci/gitlab-plugin/issues/298 वर्कअराउंड (उस चर्चा में वर्णित भी हैं) लेकिन वे सेट अप करने के लिए काफी गन्दा हैं।

12

मुझे इसी तरह का मुद्दा था। यहाँ क्या मुझे

पूर्व अनुरोध

  • जेनकींस के लिए काम किया ver है। 2 + खाता (मैं जेनकींस 2.60 उपयोग कर रहा था)
  • Github (या Githhub उद्यम)
  • आपका GitHub और जेनकींस एक दूसरे को से बात करने में सक्षम होना चाहिए।

Github

पर
  1. प्रासंगिक अधिकार के साथ एक GitHub व्यक्तिगत पहुंच टोकन (PAT) पैदा करते हैं।
  2. अपने रेपो के लिए, साथ
    • URL के रूप में YourJenkinsURL/github-webhook/
    • और जाँच 'अनुरोध खींचो'
  3. एक Jenkinsfile जड़ में जोड़ें 'मुझे अलग-अलग घटनाओं का चयन करते हैं' चुनें कोई webhook बनाने आपके रेपो का फ़ोल्डर। परीक्षण के लिए आप की तरह
  4. नीचे
 
    pipeline { 
     agent any 
     stages { 
      stage('Test') { 
       steps { 
        echo 'Hello World ...' 
       } 
      } 
     } 
    } 

एक बुनियादी हैलो दुनिया के रूप में सामग्री डाल सकता है जेनकींस

  1. पर GitHub पुल अनुरोध बिल्डर प्लगइन स्थापित करें। (आप भी "Github" प्लगइन की आवश्यकता है, लेकिन है कि सामान्य रूप ver जेनकींस के हिस्से के रूप में स्थापित किया जाना चाहिए 2 +)
  2. जेनकींस - साख
    • GitHub व्यक्तिगत पहुंच टोकन (PAT) एक 'गुप्त पाठ' क्रेडेंशियल के रूप में।
    • 'उपयोगकर्ता नाम-पासवर्ड' प्रमाण पत्र के रूप में github उपयोगकर्ता नाम-पासवर्ड जोड़ें। यह Github प्लगइन का हिस्सा है: - विन्यस्त सिस्टम
      • Github - Github सर्वर
    • जेनकींस का प्रबंधन करें। एक जिथब सर्वर जोड़ें। 'एपीआई यूआरएल' यह https://api.github.com पर डिफ़ॉल्ट होगा। यदि आप एंटरप्राइज़ गिथब का उपयोग कर रहे हैं, तो एंटरप्राइज़ github url के साथ प्रतिस्थापित करें/api/v3। प्रमाण पत्र के लिए पीएटी विकल्प का चयन करें। कनेक्शन का परीक्षण करें। 'हुक प्रबंधित करें' की जांच की जाती है।
    • गिटहब पुल अनुरोध बिल्डर: 'गिटहब सर्वर एपीआई यूआरएल' के लिए जीथब सर्वर सेक्शन में निर्दिष्ट यूआरएल का उपयोग करें। 'साझा गुप्त' खाली छोड़ दें। क्रेडेंशियल्स के लिए 'उपयोगकर्ता नाम-पासवर्ड' प्रमाण पत्र का उपयोग करें। अपने कामकाज को सुनिश्चित करने के लिए टेस्ट प्रमाण-पत्र। मेरी सेटिंग्स में, 'वेब-ऑक्स प्रबंधित करें' की जांच की गई थी।
  3. पाइपलाइन नौकरी
    • 'पाइप लाइन' विकल्प का उपयोग कर एक नया आइटम बनाएँ। नोट: यह वेनिला पाइपलाइन नौकरी है, मल्टीब्रैंच पाइपलाइन नहीं।
    • जनरल धारा: जाँच करें 'Github परियोजना' - परियोजना यूआरएल: अपने GitHub रेपो url दर्ज करें
    • बिल्ड ट्रिगर: जाँच करें 'GitHub खींचो अनुरोध बिल्डर'
      • 'GitHub एपीआई साख' विकल्प का चयन के लिए आप GitHub के लिए निर्धारित में अनुरोध बिल्डर खींच 'प्रबंधित जेनकींस - कॉन्फ़िगर प्रणाली' स्क्रीन
      • व्यवस्थापक सूची के लिए: ट्रिगर निर्माण के लिए जोड़ने के लिए अपने उपयोगकर्ता नाम
      • चेक का प्रयोग करें GitHub हुक
    • पाइपलाइन:
      1. 'एससीएम से पाइपलाइन स्क्रिप्ट' का चयन करें। नोट यह मानता है कि आपके रेपो के रूट फ़ोल्डर में 'जेनकिन्सफाइल'
      2. एससीएम: 'गिट'
      3. रिपोजिटरीज - रेपो विवरण दर्ज करें।क्रेडेंशियल्स के लिए 'उपयोगकर्ता नाम-पासवर्ड' आधारित क्रेडेंशियल्स का उपयोग करें। को चूक Jenkinsfile, वैसा ही छोड़ दें: होना चाहिए ${sha1}
      4. स्क्रिप्ट पथ -
      5. उन्नत क्लिक करें और refspec रूप +refs/pull/*:refs/remotes/origin/pr/*
      6. शाखा जोड़ें।
      7. हल्के चेकआउट - यह (https://github.com/jenkinsci/ghprb-plugin/issues/507)

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

कुछ टिप्पणियों

  • GitHub से एक जनसंपर्क के webhook पेलोड पुनः डिलीवर करने पाइपलाइन ट्रिगर नहीं करता उत्प्रेरित करने चाहिए लेकिन एक नए पीआर खोलने या यहाँ तक कि फिर से github पर एक बंद पीआर खोलना, पाइपलाइन नौकरी
  • पाइपलाइन जॉब कॉन्फ़िगरेशन में, यदि आप "पाइपलाइन स्क्रिप्ट" चुनते हैं और वहां अपनी पाइपलाइन स्क्रिप्ट पेस्ट करते हैं, तो नौकरी ट्रिगर नहीं होती है !!!
+0

हम मल्टीब्रैंच पाइपलाइन के साथ ऐसा नहीं कर सकते हैं? क्योंकि जिस शाखा के साथ मैं खेलना चाहता हूं वह मास्टर शाखा नहीं है। @ दीपक राव –

+0

'बिल्ड ट्रिगर्स:' गिटहब पुल अनुरोध बिल्डर 'की जांच करें कि विकल्प मेरे लिए नहीं है। प्लगइन स्थापित है क्योंकि वह विकल्प अन्य परियोजनाओं पर मौजूद है जो जेनकिन्सफाइल का उपयोग नहीं कर रहे हैं। कोई विचार? – edthethird

संबंधित मुद्दे