जेनकिंस Git Plugin: विशिष्ट टैग कैसे बनाएं?


120

मैं एक निर्दिष्ट टैग बनाने के लिए जेनकिन्स प्राप्त करने में समस्याएँ हूँ। यह टैग एक पैराड्राइज्ड बिल्ड का हिस्सा है, लेकिन मुझे यह नहीं पता है कि इस टैग को बनाने के लिए इसे git plugin के माध्यम से कैसे पास किया जाए। मेरे दिन के 3 घंटे हो रहे हैं और मैंने मास्टरों को स्टैक ओवरफ्लो में हार मान ली है।


आपका मतलब है कि यह stackoverflow.com/questions/7157170/… से अलग है ? ( google.com/… का तीसरा परिणाम )
VONC

1
"यह मेरे दिन के 3 घंटे ले रहा है" - मैं इतना आलसी नहीं हूं कि मेरे दिन के 3 घंटे में हर वह लिंक शामिल नहीं है जो मुझे Google पर मिल सकता है :)
sksamuel

1
क्या आप वाकई इस तरह से करना चाहते हैं? क्या आपको एहसास है कि git में टैगिंग कोई पैमाना नहीं है ? हो सकता है कि आप वास्तव में चाहते हैं कि टैग / संशोधन की जांच करने के लिए स्क्रिप्ट लिखने के लिए "निष्पादित शेल" कार्य का उपयोग कर सकें ?
mpontillo

जवाबों:


222

मैं पैरामीटर बनाने के लिए "शाखाओं का उपयोग करके" ऐसा करने में सक्षम था:

Branch Specifier (blank for default): tags/[tag-name]

अपने टैग के नाम से [टैग-नाम] बदलें।


5
मुझे नहीं पता कि यह अधिक + 1s क्यों नहीं है। उस erics- नोट्स ब्लॉग प्रविष्टि नरक के रूप में भ्रमित है। यह सरल है और महान काम करता है। धन्यवाद!
कोडी एस

3
मेरे लिए बहुत अच्छा काम किया। धन्यवाद। मेरे पैरामीटर का नाम RELEASE_TAG था इसलिए मैंने शाखा विनिर्देशक के मान के रूप में टैग / $ {RELEASE_TAG} का उपयोग किया।
वेस्ले वोमैक

3
काम करने के लिए यह नहीं मिल सका। किसी कारण के लिए टैग की जाँच नहीं कर सकते। मुझे मिलता है: 'त्रुटि: निर्माण करने के लिए कोई संशोधन नहीं मिल सका। इस कार्य के लिए रिपॉजिटरी और शाखा विन्यास की पुष्टि करें। ' मैं टैग / 3.0.1 निर्दिष्ट करता हूं, मैंने भी कोशिश की है * / टैग / 3.0.1 मैंने सत्यापित किया कि टैग मौजूद नहीं है।
गुमशुदा

1
जब मैं वह करने की कोशिश करता हूं जो इस उत्तर में सुझाया जाता है, तो रिपॉजिटरी का हर पोल एक बिल्ड को ट्रिगर करता है। Git पोलिंग लॉग लगातार दिखाएगा कि "लास्ट बिल्ट रिवीजन" टैग का संशोधन है लेकिन "लेटेस्ट रिमोट हेड रिवीजन है" नवीनतम का संशोधन है HEAD। गिट प्लगइन का तर्क इन दो संशोधनों की तुलना करता है, जो मेरे भंडार में हमेशा असमान होते हैं और इस तरह एक नया निर्माण हमेशा ट्रिगर होता है।
लुई

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

76

जेनकिंस CI v.1.555, Git क्लाइंट प्लगइन v.1.6.4 और Git प्लगइन 2.0.4 का उपयोग करते हुए इनमें से कोई भी उत्तर मेरे लिए पर्याप्त नहीं था।

मैं एक विशिष्ट, निश्चित (यानी, गैर-मानकीकृत) टैग के लिए एक गिट रिपॉजिटरी के निर्माण के लिए नौकरी चाहता था। मुझे विभिन्न जवाबों के साथ-साथ थिलो द्वारा उद्धृत ब्लॉग पोस्ट "बिल्ड ए टैग" बिल्ड ब्लॉग का एक समाधान करना था ।

  1. सुनिश्चित करें कि आप अपने टैग को दूरस्थ रिपॉजिटरी के साथ धक्का देते हैं git push --tags
  2. "स्रोत कोड प्रबंधन" शीर्षक के तहत, अपनी नौकरी के "गिट रिपोजिटरी" अनुभाग में, "उन्नत" पर क्लिक करें।
  3. Refspec के क्षेत्र में, निम्नलिखित पाठ जोड़ें: +refs/tags/*:refs/remotes/origin/tags/*
  4. "ब्रांच टू बिल्ड", "ब्रांच स्पेसियर" के तहत, अपने वास्तविक टैग नाम के साथ */tags/<TAG_TO_BUILD>() की जगह <TAG_TO_BUILD>लें।

मेरे लिए Refspec जोड़ना महत्वपूर्ण निकला। हालाँकि ऐसा लगता था कि git रिपॉजिटरी सभी दूरस्थ जानकारी को डिफ़ॉल्ट रूप से ला रही थी जब मैंने इसे खाली छोड़ दिया था, फिर भी Git plugin मेरे टैग को खोजने में पूरी तरह से विफल रहेगा। केवल जब मैंने स्पष्ट रूप से "दूरस्थ टैग प्राप्त करें" को निर्दिष्ट किया था Refspec फ़ील्ड में Git प्लगइन मेरे टैग से पहचान और निर्माण करने में सक्षम था।

अपडेट 2014-5-7 : दुर्भाग्यवश, यह समाधान जेनकिंस CI (v.1.555) और Git रिपॉजिटरी पुश नोटिफिकेशन मैकेनिज्म A la Stash Webhook for Jenkins के लिए अवांछनीय साइड-इफेक्ट के साथ आता है : किसी भी समय रिपॉजिटरी पर कोई भी शाखा अपडेट नहीं की जाती है एक धक्का में, टैग निर्माण कार्य भी फिर से आग लग जाएगी। इसके कारण बार-बार एक ही टैग जॉब्स के अनावश्यक अनावश्यक निर्माण होते हैं। मैंने "कार्यक्षेत्र का उपयोग कर फोर्स पोलिंग" विकल्प के साथ और इसके बिना नौकरियों को कॉन्फ़िगर करने की कोशिश की है, और इसका कोई असर नहीं हुआ। एक ही तरीका है कि मैं जेनकिंस को टैग नौकरियों के लिए अनावश्यक बिल्ड बनाने से रोक सकता हूं, वह है रिफस्पेक क्षेत्र को साफ करना (यानी, हटाना +refs/tags/*:refs/remotes/origin/tags/*)।

यदि किसी को अधिक सुरुचिपूर्ण समाधान मिल जाता है, तो कृपया इस उत्तर को अपडेट के साथ संपादित करें। मुझे संदेह है, उदाहरण के लिए, कि शायद यह तब नहीं होगा जब विशेष रूप से रिस्पेक +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>तारांकन-कैच-ऑल के बजाय था । अभी के लिए, हालांकि, यह समाधान हमारे लिए काम कर रहा है, हम बस काम के सफल होने के बाद अतिरिक्त Refspec को हटा देते हैं।


4
Refspec के लिए "निम्न पाठ जोड़ने के लिए" ... यदि आपका refspec पहले था तो +refs/heads/*:refs/remotes/origin/*अब होगा +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*। (मैंने रिस्पेक्ट के साथ ज्यादा काम नहीं किया है, इसलिए यह सीखने के लिए कुछ प्रयोग किए गए कि यह क्षेत्र अंतरिक्ष-रहित है।)
बहाव

1
इस समाधान के लिए एक अतिरिक्त +1। पूर्व समाधान मेरे लिए भी काम नहीं करते थे।
गोरेपी

16

क्या आप जेनकिन्स को रेफ नाम से निर्माण करने के लिए नहीं कह सकते हैं? अगर ऐसा है तो

refs/tags/tag-name

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


आप वास्तव में टीम शहर का सुझाव देने वाले पहले व्यक्ति नहीं हैं। क्या यह वास्तव में इतना बेहतर है? मैं इसे देख सकता हूँ।
स्कैमुएल

1
@monkjack मैंने अपने रेपो के एक ही सिंटैक्स की कोशिश की और यह काम कर गया। क्या आप अपने वर्तमान टैग सूचीबद्ध कर सकते हैं? क्या आप सुनिश्चित हैं कि आपने विशेष रूप से उस टैग को दूरस्थ रेपो के साथ धकेल दिया हैgit push --tags
एंड्रयू टी फिननेल

4
करीब आ रहे हैं। मैं टैग को दूरस्थ तक नहीं पहुंचा रहा था, लेकिन अब मैं हूं। मैं रेफरी / टैग / harpercollins-1.0.16 का उपयोग करके अब निर्माण करने के लिए जेनकिंस प्राप्त कर सकता हूं, हालांकि यह हमेशा सिर के निर्माण पर जोर देता है, भले ही मैं वहां क्या डालूं। मैंने पुष्टि की है कि रिमोट में टैग है (इसे gitweb में देख सकते हैं) और उस टैग के स्नैपशॉट को करने से सब कुछ ठीक से होने की पुष्टि होती है।
स्कैमुएल 10

6
टीमसिटी मालिकाना है, जिससे यह बहुत बेकार हो जाता है।
स्लैंग

2
अरे हाँ, फ्री टूल से कमर्शियल में स्विच करना सही विकल्प है! जब jetbrains पहिया को सुदृढ़ करते हैं और नए बग ट्रैकर बनाते हैं, तो क्या आप अन्य लोगों को बुज़िला से स्विच करने का प्रस्ताव देंगे?
m1ld

11

यदि आप जेनकिंस पाइपलाइनों का उपयोग कर रहे हैं और एक विशिष्ट टैग (जैसे TAGआपके निर्माण का एक पैरामीटर) चेकआउट करना चाहते हैं , तो यहां आप क्या कर सकते हैं:

stage('Checkout') {
  steps {
    checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', credentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false
  }
}

9

एक नवीनतम जेनकिंस (1.639 और ऊपर) में आप कर सकते हैं:

  1. किसी फ़ील्ड में टैग का नाम निर्दिष्ट करें 'शाखाएँ बनाने के लिए'।
  2. एक पैरामीरिज्ड बिल्ड में आप पैरामीटर का उपयोग उसी क्षेत्र में चर के रूप में कर सकते हैं 'शाखाएँ बनाने के लिए' यानी $ {Branch_to_build}।
  3. आप Git Parameter Plugin इंस्टॉल कर सकते हैं जो आपको सभी उपलब्ध शाखाओं और टैगों की सूची बनाकर कार्यक्षमता प्रदान करेगा।

1
वास्तव में सिर्फ एक टैग नाम दर्ज करना मेरे लिए भी काम कर गया। हालांकि git plugin में इसके लिए प्रलेखन अभी भी विशेष रूप से कहता है कि ऐसा करने से काम नहीं करना चाहिए: "<tagName>: यह काम नहीं करता है क्योंकि टैग को टैग के रूप में मान्यता नहीं दी जाएगी। इसके बजाय refs / टैग / <tagName> का उपयोग करें।"
ज़िट्रैक्स

यह मेरे लिए जेनकिंस 1.532.3 में काम किया, मैंने 1.0.1फ़ील्ड बनाने के लिए शाखाओं में टैग संस्करण (जैसे ) निर्दिष्ट किया ।
andre

9

मैंने कुछ इस तरह किया और यह काम किया:

Source Code Management

 Git    
    Repositories    


 Advance

Name: ref
Refspec : +refs/tags/*:refs/remotes/origin/tags/* 

 Branches to build  
 Branch Specifier (blank for 'any') : v0.9.5.2

यहाँ छवि विवरण दर्ज करें

जेनकिंस लॉग ने पुष्टि की कि उसे टैग से स्रोत मिल रहा था

संशोधन की जाँच 0b4d6e810546663e931cccb45640583b596c24b9(v0.9.5.2)


यह सभी टैग बनाने के लिए बहुत अच्छा है, धन्यवाद! refspecएडवांस्ड बटन पर क्लिक करके ट्रिक जोड़ना था।
स्टाइल

9

मैंने उन्नत-> Refspec फ़ील्ड को सेट किया refs/tags/[your tag name]। यह Refspec के लिए विभिन्न अन्य सुझावों की तुलना में सरल लगता है, लेकिन यह मेरे लिए ठीक काम किया।

अद्यतन 23/7/2014 - वास्तव में, आगे के परीक्षण के बाद, यह पता चला है कि यह उम्मीद के मुताबिक काम नहीं किया। ऐसा प्रतीत होता है कि HEAD संस्करण अभी भी चेक आउट किया जा रहा था। कृपया इसे स्वीकृत उत्तर के रूप में पूर्ववत करें। मैंने इस सूत्र (30 मार्च) में गेटेनेस से पोस्ट का पालन करके एक कार्यशील समाधान प्राप्त किया । बिल्डरों के अनावश्यक ट्रिगरिंग के उस पोस्ट में उल्लेखित मुद्दा मेरे लिए कोई मुद्दा नहीं था, क्योंकि मेरी नौकरी एक अपस्ट्रीम जॉब से शुरू होती है, न कि पोलिंग एससीएम से।

अद्यतन APR-2018 - टिप्पणियों में ध्यान दें कि यह एक व्यक्ति के लिए काम करता है, और जेनकिंस प्रलेखन से सहमत है।


बस टिप्पणी करना चाहता था कि-चार साल के बाद इस उत्तर पोस्ट-उपयोग कर रहा था refs/tags/<tagname>क्या जेनकींस प्रलेखन है का कहना है कि इस्तेमाल किया जाना चाहिए, और यह मेरे लिए ठीक काम कर रहा है। शायद प्लगइन मूल पोस्ट के समय गाड़ी था, लेकिन ... अप्रैल 2018 के रूप में, यह है सही जवाब।
evadeflow

मेरी पिछली टिप्पणी को अपडेट करना: वास्तव में, मैंने पाया है कि मैं refs/tagsउपसर्ग को छोड़ सकता हूं और बस उपयोग कर सकता हूं <tagname>। YMMV, लेकिन ... यह मेरे उद्देश्यों के लिए ठीक काम कर रहा है।
evadeflow

3

मैं इस ब्लॉग पोस्ट में विस्तृत रूप में Refspec और Branch Specifier को सेट करके टैग बनाने के लिए जेनकिंस प्राप्त करने में सक्षम था ।

मुझे रिपॉजिटरी नाम (मेरे मामले में "मूल") भी सेट करना पड़ा, ताकि मैं इसे रेफस्पेक में संदर्भित कर सकूं (अन्यथा यह स्पष्ट रूप से एक यादृच्छिक रूप से उत्पन्न नाम का उपयोग करेगा)।


2

अंत में मैंने क्या किया:

  • एक नई शाखा बनाई jenkins-target, और इसे ट्रैक करने के लिए जेनकिंस प्राप्त किया
  • मैं जिस भी ब्रांच या टैग से मर्ज करना चाहता हूं jenkins-target
  • एक बार जब बिल्ड काम कर रहा था, परीक्षण गुजर रहा है आदि, बस jenkins-targetशाखा से एक टैग बनाएं

मुझे यकीन नहीं है कि अगर यह हर किसी के लिए काम करेगा, तो मेरी परियोजना काफी छोटी थी, बहुत सारे टैग और सामान नहीं थे, लेकिन यह करना आसान है, न ही रीस्पेक और मापदंडों और सामान के साथ गड़बड़ करना है :-)


मुझे यह बहुत सरल दृष्टिकोण पसंद है।
zochhuana

2

आप एक प्रकार का टैग भी बना सकते हैं, उदाहरण के लिए 1.2.3-alpha43, वाइल्डकार्ड का उपयोग करके:

Refspec: +refs/tags/*:refs/remotes/origin/tags/*

शाखा विवरण: origin/tags/1.2.3-alpha*

आप पुश को ट्रिगर करने के लिए " बिल्ड तब बदल सकते हैं जब GitHub में धक्का दिया जाता है ", लेकिन आपको webhook में "create" क्रिया को जोड़ना होगा


1

यहाँ मेरे दो सेंट जोड़ने से मुझे एक उत्तर नहीं मिला है जो जेनकिंस में "बिल्ड विद मापदंडों" विकल्प का उपयोग करता है।

यहाँ मैं प्रोजेक्ट Starwars_api के लिए जेनकिंस CI ब्राउज़र कंसोल का उपयोग कर रहा हूँ और मैं सीधे मूल्य पैरामीटर / टैग / टैग-नाम के साथ "बिल्ड विद मापदंडों" का निर्माण करने में सक्षम था

  1. "मापदंडों के साथ निर्माण" विकल्प चुनें।
  2. बॉक्स में "refs / टैग / tag_142" (मेरे उदाहरण के लिए tag_name = tag_142) मान जोड़ें

टैग टैग के साथ बनाएँ

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