मैं जेनकिंस में कार्यक्षेत्र को कैसे साफ कर सकता हूं? मैं AccuRev
संस्करण नियंत्रण उपकरण के रूप में उपयोग कर रहा हूं ।
मैंने freestyle
जेनकिन्स में प्रोजेक्ट बनाए ।
जवाबों:
जेनकिंस में कार्यक्षेत्र को साफ करने का एक तरीका है। आप निर्माण से पहले या निर्माण के बाद कार्यक्षेत्र को साफ कर सकते हैं।
सबसे पहले, Workspace Cleanup Plugin इंस्टॉल करें ।
बिल्ड से पहले कार्यक्षेत्र को साफ करने के लिए: बिल्ड एन्वायर्नमेंट के तहत , बॉक्स को चेक करें जो कहता है कि बिल्ड शुरू होने से पहले कार्यक्षेत्र हटा दें।
निर्माण के बाद कार्यक्षेत्र को साफ करने के लिए: शीर्षक के अंतर्गत पोस्ट-निर्माण कार्यों का चयन हटाएँ कार्यक्षेत्र जब निर्माण किया जाता है से जोड़ें के बाद निर्माण कार्यों ड्रॉप डाउन मेनू।
यदि आप मैन्युअल रूप से इसे साफ करना चाहते हैं, तो मेरे लिए जेनकिंस के मेरे संस्करण के साथ (स्थापित एक अतिरिक्त प्लगइन की आवश्यकता नहीं दिखाई देती है, लेकिन जो जानता है), बाएं कॉलम पर "कार्यक्षेत्र" लिंक है, अपने प्रोजेक्ट पर क्लिक करें, फिर "कार्यक्षेत्र" पर, फिर बाएं हाथ की ओर के स्तंभ पर "नीचे वर्तमान कार्यक्षेत्र मिटाएं" लिंक दिखाई देता है।
उपरोक्त समाधानों के अलावा, एक और "COMMON" तरीका है - सीधे लिनक्स मशीन से सबसे बड़े अंतरिक्ष उपभोक्ता को हटा दें। आप निम्न चरणों का पालन कर सकते हैं:
छिपे हुए फ़ोल्डर को भी सूचीबद्ध करने के लिए ls -lart का उपयोग करते हुए, आमतौर पर जेनकिन इंस्टॉलेशन को .jenkins / फ़ोल्डर में रखा जाता है
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
उच्च स्तर में डिस्क स्थान दिखाने के लिए
du -sh ./*/
वर्तमान पथ में प्रत्येक सबफ़ोल्डर के लिए कुल मेमोरी को सूचीबद्ध करने के लिए।
du -a /etc/ | sort -n -r | head -n 10
शीर्ष 10 निर्देशिकाओं को डिस्क स्थान / आदि में खाने की सूची देगा
आम तौर पर ./job/ फ़ोल्डर या ./workspace/ फ़ोल्डर सबसे बड़ा फ़ोल्डर हो सकता है। कृपया अंदर जाएं और अपनी आवश्यकता के आधार को हटा दें (संपूर्ण फ़ोल्डर को न हटाएं)।
rm -rf theFolderToDelete
जेनकिंस फ़ाइल में जोड़ें
cleanWs()
बिल्ड पूर्ण होने के बाद यह कार्यक्षेत्र को हटा देगा
cleanWs()
मेरे पास जोड़ने के लिए सिंटैक्स के रूप में प्लगइन लैंडिंग पृष्ठ पर मौजूद नहीं था Jenkinsfile
।
महत्वपूर्ण: जब तक नौकरी नहीं चल रही है तब तक किसी दिए गए जेनकिंस नौकरी के लिए कार्यक्षेत्र को निकालना सुरक्षित है!
नोट: मैं मान रहा हूँ कि आपका $JENKINS_HOME
डिफ़ॉल्ट पर सेट है:/var/jenkins_home
।
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
यह श्वेतसूची बनाने के लिए grep का उपयोग करता है:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
यह दो का उपयोग करता है और सबसे बड़े से सबसे छोटे क्रम में कार्यक्षेत्रों को सूचीबद्ध करने के लिए उपयोग करता है। फिर, यह पहले 10 को हथियाने के लिए सिर का उपयोग करता है:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
आप नीचे दी गई स्क्रिप्ट को प्रबंधित करें Jenkins → लिपियों कंसोल में एक ही बार में सभी नौकरियों के कार्यक्षेत्र को हटाने के लिए चला सकते हैं । हमने फाइल सिस्टम पर जगह को साफ करने के लिए ऐसा किया।
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
टिप्पणी करने की अनुमति नहीं है, इसलिए:
उपेन का जवाब ठीक काम करता है, लेकिन अगर आपके पास जेनकिंस पाइपलाइन जॉब्स फ्रीस्टाइल जॉब्स के साथ मिश्रित नहीं है। पाइपलाइन जॉब्स पर DoWipeWorkspace जैसी कोई विधि नहीं है। इसलिए मैंने उन लोगों को छोड़ने के लिए स्क्रिप्ट को संशोधित किया:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
यदि आवश्यक हो तो आप नौकरी के नाम भी फ़िल्टर कर सकते हैं:
item.getDisplayName().toLowerCase().contains("release")
ऊपर बताए गए विकल्प दिखाई देने से पहले आपको इस प्लगइन को इंस्टॉल करना होगा
यह प्लगइन किसी भी चरण (स्रोत नियंत्रण) चलाने से पहले आपको संपूर्ण कार्यक्षेत्र को हटाने की अनुमति देने के लिए सभी कार्य कॉन्फ़िगर करने के लिए चेक बॉक्स जोड़ता है
यह सुनिश्चित करने के लिए उपयोगी है कि आप हमेशा एक ज्ञात बिंदु से शुरू करते हैं, यह सुनिश्चित करने के लिए कि आप कैसे निर्माण करेंगे
इसे करने का एक विकल्प है। कॉन्फ़िगर करें -> पोस्ट-बिल्ड एक्शन
विकल्प कम से कम जेनकींस संस्करण 2.236 में डिफ़ॉल्ट रूप से आता है
यदि आप केवल एक dir (या फ़ाइल) को निकालना चाहते हैं, तो आप Groovy और मैनेज जेनकींस का उपयोग कर सकते हैं → लिपियों कंसोल एक स्क्रिप्ट चलाते हैं जो इसे हटा देता है।
उदाहरण के लिए, आप निम्न फ़ाइलों को देख सकते हैं:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
और फिर, जब आपके पास वह फ़ोल्डर dh
हो जिसे आप हटाना चाहते हैं , तो आप बस अगले कोड को जोड़ सकते हैं:
dh.deleteDir()
और इसे हटा दिया जाएगा।
नोट: उदाहरण में दिखाया गया रास्ता एक बिटनामी जेन्किन्स इंस्टॉलेशन के लिए है, आपका अलग हो सकता है।