जेनकिंस में बिल्ड नंबर कैसे रीसेट करें?


89

मैं अपना जावा प्रोजेक्ट बनाने के लिए जेनकिन्स और ग्रैडल का उपयोग कर रहा हूं।

जब भी मैं अपना प्रोजेक्ट बनाता हूं, मुझे जेनकिंस स्क्रीन पर एक नया बिल्ड नंबर मिलता है।

निम्नलिखित मेरे जेनकींस बिल्ड की जानकारी है:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

मैं जेनकींस बिल्ड नंबर को रीसेट करना चाहता हूं जैसे:

Success > Console Output  #1    03-Jan-2014 12:02:45

मैं जेनकिन्स में बिल्ड नंबर कैसे रीसेट कर सकता हूं?

जवाबों:


161

ग्रूवी स्क्रिप्ट कंसोल से आसान किया जा सकता है। पर जाएं http: // अपने-जेनकींस-सर्वर / लिपि स्क्रिप्ट विंडो में दर्ज करें:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
या java -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
क्ली के

3
यह निश्चित रूप से सबसे अच्छा जवाब है। यदि आपको केवल नंबर सेट करना है तो आपको डिलीट लूप की भी आवश्यकता नहीं है।
निक

किसी कारण से यह केवल नवीनतम बिल्ड पर डिलीट करता है, हालांकि निम्नलिखित ने मेरे लिए काम किया है: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

एक noob सवाल .. मैं कैसे सही नौकरी का नाम पता है।
अम्मार मुजीब

@AmmarMujeeb अपने जेनकिंस डैशबोर्ड पर जाएं और आपको वहां काम का नाम दिखाई देगा। आप /var/lib/jenkins/jobs/लिनक्स पर भी जा सकते हैं और निर्देशिका के नाम पर सटीक नौकरी का नाम है
rickrizzo

62

से यहाँ

आपके हडसन की नौकरी का नाम FooBar है,

  • FooBar को FooBar-Copy नाम दें
  • फूबर-कॉपी से 'कॉपी मौजूदा नौकरी' विकल्प का उपयोग करके, फूबर नाम की एक नई नौकरी बनाएं
  • FooBar-Copy को हटाएं

35
  • पहले कार्यक्षेत्र को मिटा दें और पिछले बिल्ड से छुटकारा पाएं।
    • सर्वर पर नौकरी dir के लिए नेविगेट करें उदा। 'var / lib / jenkins / jobs / myJob' कार्यक्षेत्र को हटा दें और dirs के साथ-साथ किसी भी मतदान फ़ाइलों, lastSuccessful, lastStable फ़ाइलों आदि का निर्माण करें। आपके पास केवल config.xml और lastBuildNumber होना चाहिए।
    • सेवा जेनकींस स्टॉप जैसी किसी चीज़ का उपयोग करके जेनकींस को बंद करें
    • वर्तमान बिल्ड संख्या के बजाय 1 सम्मिलित करते हुए नेक्स्टबिल्डनंबर नामक फाइल को संपादित करें
    • फिर से जेनकिंस शुरू , सेवा जेनकींस शुरू
    • जेनकिंस में लॉग इन करें और अपनी नौकरी और हिट बिल्ड पर जाएं। नौकरी # 1 का निर्माण शुरू करना चाहिए

1
यह बहुत मददगार था। धन्यवाद।

23

यदि आप अगला बिल्ड नंबर सेट करना चाहते हैं, तो उसके लिए प्लगइन "नेक्स्टबाइल्डनंबर" है। लेकिन यह आपके मामले में काम नहीं करेगा क्योंकि आपको जो बिल्ड नंबर चाहिए, जो कि 1 है, आपके मौजूदा बिल्ड नंबर से कम है।

यहां पहले के सभी बिल्ड को पहले मिटा देना होगा। आप इस सरल स्क्रिप्ट को चलाकर ऐसा कर सकते हैं -> - प्रबंधित जेनकिंस -> स्क्रिप्ट कंसोल प्रबंधित करें

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }

अब आप अगली बिल्ड संख्या को 1 पर सेट कर सकते हैं और बिल्ड को चला सकते हैं। इसकी शुरुआत 1 से होगी । :) यह इत्ना आसान है।

अपडेट - जेनकिंस में अब सबसे आसान तरीके से काम करने के लिए एक पर्ज जॉब हिस्ट्री प्लगइन है। अधिक विवरण के लिए पृष्ठ चेकआउट करें - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

आम तौर पर अपने बिल्ड नंबर को N(जहां Nजरूरी नहीं कि 1 है) रीसेट करने के लिए :

  • किसी भी मौजूदा बिल्ड को हटाएं जहां buildNumber >= N
  • संपादित करें Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber। इसमें वह संख्या सेट करें जिसमें यह शामिल है N
  • जेनकिंस से, का चयन करें Manage Jenkins -> Reload Configuration from Disk

सुनिश्चित करें कि आप "डिस्क से फिर से लोड विन्यास" का अर्थ से पहले इस दोष पढ़ें - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

स्वीकार किए गए उत्तर पर विस्तार करते हुए, यहां बताया गया है कि यह एक ही बार में सभी परियोजनाओं के लिए कैसे किया जाए:

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

@ Antweiss के उत्कृष्ट उत्तर के उल्लेख के रूप में, हम वास्तव में आगे बढ़ सकते हैं ...

पूर्ण बिल्ड इतिहास को हटाने की कोई आवश्यकता नहीं है, यदि आप नहीं चाहते हैं, तो आप बस समय वापस ले सकते हैं, एक पूर्व बिंदु पर:

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

यदि आप एक डमी चलाना चाहते हैं, तो यह जांचने के लिए कि यह क्या करने जा रहा है, वास्तव में ऐसा करने के बिना, बस build.delete()और item.updateNextBuildNumber(resetNumberTarget)लाइनों पर टिप्पणी करें और विभिन्न प्रिंट कमांड को अनलाइक करें।


दस्तावेज़ीकरण: इन वस्तुओं का विवरण खोजना मुश्किल था, लेकिन मैंने निम्नलिखित की पहचान की:


1

आप बिल्ड नंबर को रीसेट करने के लिए nexBuildNumberप्लग-इन या बस nexBuildNumberफ़ाइल को संशोधित कर सकते हैं । निम्नलिखित चरण हैं जिन्हें आपको करने की आवश्यकता है:

  • पर जाएं .jenkins/Jobs/<YourJobName>/build/, इस फ़ोल्डर का बैकअप लेने के लिए और नष्ट (यदि आप भविष्य में उपयोग के लिए की जरूरत है) का निर्माण फ़ोल्डर।

नोट: एक बार जब आप पुराने बिल्ड को साफ कर लेते हैं, तो आप बिल्ड हिस्टरी खो देते हैं और वे जेनकिंस डैशबोर्ड पर उपलब्ध नहीं होते हैं।

  • कॉन्फ़िगरेशन को फिर से लोड करें (जेनकिंस -> जेनकींस प्रबंधित करें)।
  • अगली बिल्ड वर्जन को या तो नेक्स्ट बिल्ड नंबर प्लग-इन का उपयोग करके सेट करें या nextBuildNumberफाइल को अपने थ्रीजी डायरेक्टरी में संशोधित करें ।

0

मुझे ऐसा करने का एक आसान तरीका मिला।

  1. अपने कार्य स्थान को मिटा दें।
  2. प्रत्येक बिल्ड पर जाएं, जो जेनकिन्स पर सहेजे गए और इसे हटा दें।
  3. बिल्ड नंबर को 1 पर सेट करें फिर बिल्ड करें।

जेनकींस अगले बिल्ड नंबर को निर्धारित करने के लिए पिछले बिल्ड का उपयोग करती है, यदि बिल्ड नंबर आप इनपुट पिछले बिल्ड नंबर से कम है, तो जेनकिन्स स्वचालित रूप से आपके बिल्ड नंबर को पिछले बिल्ड से अधिक बढ़ा देगा। तो यहाँ हम बस



-1

सभी नौकरियों के बिल्ड नंबर रीसेट करने के लिए:

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.