मैंने हाल ही में अपने एक हडसन बिल्ड के कॉन्फ़िगरेशन को अपडेट किया है। बिल्ड इतिहास सिंक से बाहर है। क्या मेरा निर्माण इतिहास साफ़ करने का कोई तरीका है?
कृपया और धन्यवाद
मैंने हाल ही में अपने एक हडसन बिल्ड के कॉन्फ़िगरेशन को अपडेट किया है। बिल्ड इतिहास सिंक से बाहर है। क्या मेरा निर्माण इतिहास साफ़ करने का कोई तरीका है?
कृपया और धन्यवाद
जवाबों:
यदि आप डिस्क से प्रबंधित हडसन / रीलोड कॉन्फ़िगरेशन पर क्लिक करते हैं, तो हडसन सभी बिल्ड इतिहास डेटा को फिर से लोड करेगा।
यदि डिस्क पर डेटा गड़बड़ है, तो आपको अपने% HUDSON_HOME% \ jobs \ < projectname > निर्देशिका में जाना होगा और बिल्ड निर्देशिकाओं को पुनर्स्थापित करना होगा, क्योंकि वे होना चाहिए। फिर कॉन्फ़िगर डेटा पुनः लोड करें।
यदि आप बस पूछ रहे हैं कि सभी बिल्ड इतिहास को कैसे हटाया जाए, तो आप यूआई के माध्यम से बिल्ड को एक-एक करके हटा सकते हैं यदि कुछ ही हैं, या% HUDSON_HOME% \ jobs \ < प्रोजेक्टनेम > निर्देशिका में जाएं और सभी को हटा दें उपनिर्देशिका वहाँ - वे बनाता है के अनुरूप हैं। बाद में परिवर्तनों को प्रभावी करने के लिए सेवा को फिर से शुरू करें।
स्क्रिप्ट कंसोल का उपयोग करें (जेनकींस को प्रबंधित करें> स्क्रिप्ट कंसोल) और कुछ इस तरह की स्क्रिप्ट एक नौकरी के निर्माण के इतिहास को नष्ट करने के लिए थोक के लिए https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulactDeleteBuilds.groovy
वह स्क्रिप्ट मानती है कि आप केवल बिल्ड की एक श्रेणी को हटाना चाहते हैं। किसी दिए गए कार्य के लिए सभी बिल्ड को हटाने के लिए, इस (परीक्षण) का उपयोग करें:
// 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() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
यह जवाब जेनकिंस के लिए है
अपने जेनकींस होम पेज पर जाएं → जेनकिंस → स्क्रिप्ट कंसोल प्रबंधित करें
निम्नलिखित स्क्रिप्ट को वहां चलाएँ। बदलें copy_folder
करने के लिएyour project name
कोड:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
यहां एक और विकल्प है: बिल्ड को cURL के साथ हटाएं।
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
उपर्युक्त डिलीट जॉब myJob के लिए # 1 से # 56 का निर्माण करता है।
यदि प्रमाणीकरण जेनकिन्स उदाहरण पर सक्षम है, तो एक उपयोगकर्ता नाम और एपीआई टोकन इस तरह प्रदान किया जाना चाहिए:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
/me/configure
Jenkins में पृष्ठ से API टोकन प्राप्त किया जाना चाहिए । उपयोगकर्ता नाम और एपीआई टोकन दोनों को प्रदर्शित करने के लिए "शो एपीआई टोकन ..." बटन पर क्लिक करें।
संपादित करें: एक को बदलने के लिए हो सकता है doDeleteAll
द्वारा doDelete
यूआरएल में ऊपर इस काम करने के लिए, विन्यास या इस्तेमाल जेनकींस के संस्करण के आधार।
आप केवल अंतिम 1 बिल्ड को बचाने के लिए अस्थायी रूप से प्रोजेक्ट कॉन्फ़िगरेशन को संशोधित कर सकते हैं, कॉन्फ़िगरेशन को फिर से लोड कर सकते हैं (जो पुराने बिल्ड को रद्दी करना चाहिए), फिर कॉन्फ़िगरेशन सेटिंग को फिर से अपने इच्छित मूल्य में बदल दें।
यदि आप MultiBranchProject (जैसे पाइपलाइन) के निर्माण के इतिहास को साफ़ करना चाहते हैं, तो अपने जेनकींस होम पेज पर जाएं → जेनकिंस → स्क्रिप्ट कंसोल प्रबंधित करें और निम्न स्क्रिप्ट चलाएँ:
def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
def job = it
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
}
यह एक सबसे अच्छा विकल्प उपलब्ध है।
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
यह कोड सभी जेनकींस जॉब बिल्ड हिस्ट्री को डिलीट कर देगा।
स्क्रिप्ट कंसोल का उपयोग करना।
यदि नौकरियों को समूहीकृत किया जाता है, तो या तो इसे आगे की स्लैश के साथ पूरा नाम देना संभव है:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
या पदानुक्रम को इस तरह से पार करें:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
फ़ाइल सिस्टम से सीधे हटाना सुरक्षित नहीं है। आप सभी नौकरियों (पुनरावर्ती) से सभी बिल्ड को हटाने के लिए नीचे स्क्रिप्ट चला सकते हैं।
def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
println it.name
builds = it.getBuilds()
for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
builds.get(i).delete()
println "Deleted" + builds.get(i)
}
}
}
बिल्ड को साफ करने का एक और आसान तरीका यह है कि अपनी नौकरियों के अंत में Discard Old Plugin को शामिल किया जाए। बचाने के लिए बिल्ड की अधिकतम संख्या सेट करें और फिर से काम चलाएं:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
%HUDSON_HOME%\jobs\<projectname>
निकालें builds
dir पर जाएं और lastStable, lastSuccessful
लिंक हटाएं , और nextBuildNumber
फ़ाइल निकालें ।
उपरोक्त चरण करने के बाद UI से नीचे लिंक पर जाएं
जेनकींस जाएं-> जेनकिंस प्रबंधित करें -> डिस्क से कॉन्फ़िगरेशन पुनः लोड करें
यह आपकी जरूरत के अनुसार ही करेगा
यदि स्क्रिप्ट कंसोल विधि का उपयोग कर रहे हैं तो नौकरियों को फ़ोल्डर कंटेनर में वर्गीकृत किया जा रहा है, तो खाते में लेने के बजाय निम्नलिखित का उपयोग करने का प्रयास करें।
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
या
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)