जेनकिंस: क्या जेनकिंस कार्यक्षेत्र को साफ करने का कोई तरीका है?


104

मैं जेनकिंस में कार्यक्षेत्र को कैसे साफ कर सकता हूं? मैं AccuRevसंस्करण नियंत्रण उपकरण के रूप में उपयोग कर रहा हूं ।

मैंने freestyleजेनकिन्स में प्रोजेक्ट बनाए ।

जवाबों:


95

जेनकिंस में कार्यक्षेत्र को साफ करने का एक तरीका है। आप निर्माण से पहले या निर्माण के बाद कार्यक्षेत्र को साफ कर सकते हैं।

सबसे पहले, Workspace Cleanup Plugin इंस्टॉल करें ।

बिल्ड से पहले कार्यक्षेत्र को साफ करने के लिए: बिल्ड एन्वायर्नमेंट के तहत , बॉक्स को चेक करें जो कहता है कि बिल्ड शुरू होने से पहले कार्यक्षेत्र हटा दें।

निर्माण के बाद कार्यक्षेत्र को साफ करने के लिए: शीर्षक के अंतर्गत पोस्ट-निर्माण कार्यों का चयन हटाएँ कार्यक्षेत्र जब निर्माण किया जाता है से जोड़ें के बाद निर्माण कार्यों ड्रॉप डाउन मेनू।


बहुत बहुत धन्यवाद नागेन्द्र। मैं कार्यक्षेत्र सफाई प्लगइन का उपयोग करके इस समस्या को ठीक करने में सक्षम हूं।
कार्तिक

यदि मैं कार्यक्षेत्र को साफ नहीं करता तो क्या होगा? क्या यह दूरस्थ url से परिवर्तन ला रहा है या केवल एक ही चीज़ पर बार-बार निर्माण कर रहा है?
अल्‍पगुए जूल

@alpguguy जेनकिन्स आपके द्वारा चलाए जाने वाले प्रत्येक निर्माण के लिए एक नया कार्यक्षेत्र बनाता है, इसलिए यदि आप कार्यस्थानों को नहीं हटाते हैं तो अंततः आपका नोड अंतरिक्ष से बाहर चला जाएगा।
मील्स विंटर

क्या हम कार्यक्षेत्र का पुन: उपयोग कर सकते हैं .. वर्तमान में जब मैं इसे git सर्वर से क्लोन कोड को पुश करता हूं तो बिल्ड शुरू करें। इस प्रक्रिया को बनाने के लिए अतिरिक्त जोड़ने में एक लंबी प्रक्रिया होती है! क्या हम अभी नवीनतम कमिट कर सकते हैं? @ माइल्सविंटर
अल्फा

@alphaguy आप रेफरेंस रेपो का उपयोग कर सकते हैं, इसका उत्तर यहां देखें: stackoverflow.com/a/9932036/6221831
मील्स विन्थर

53

यदि आप मैन्युअल रूप से इसे साफ करना चाहते हैं, तो मेरे लिए जेनकिंस के मेरे संस्करण के साथ (स्थापित एक अतिरिक्त प्लगइन की आवश्यकता नहीं दिखाई देती है, लेकिन जो जानता है), बाएं कॉलम पर "कार्यक्षेत्र" लिंक है, अपने प्रोजेक्ट पर क्लिक करें, फिर "कार्यक्षेत्र" पर, फिर बाएं हाथ की ओर के स्तंभ पर "नीचे वर्तमान कार्यक्षेत्र मिटाएं" लिंक दिखाई देता है। स्क्रीनशॉट


5
मैं दुर्भाग्य से यह नहीं देख पा रहा हूं। यकीन है कि यह एक प्लगइन नहीं है?
जोकिम ब्रेटनर

2
हम्म ऐसा लगता है कि "वर्कस्पेस क्लीनअप प्लगिन" वास्तव में प्लगइन्स में से एक है जो "डिफ़ॉल्ट रूप से" स्थापित है। हालाँकि, इसे हटाने के बाद, मेरे पास अभी भी वह लिंक है और यह अभी भी कार्य कर रहा है। तो ... यकीन नहीं है कि यह कहाँ से आता है। V2.121.3
rogerdpack

2
यह काम किया है, लेकिन मुझे दो बार कार्यक्षेत्र लिंक पर क्लिक करना पड़ा: "कार्यक्षेत्र" पृष्ठ पर जाने वाला पहला, वास्तव में "वर्तमान कार्यक्षेत्र मिटाएं" लिंक दिखाने के लिए दूसरी बार। मुझे लगता है कि यह एक ऐसी जानकारी है जिसे आप उत्तर में शामिल कर सकते हैं।
गनफू

जेनकींस संस्करण क्या है? क्योंकि मेरा यह विकल्प नहीं दिखा (शायद मेरा बहुत पुराना है)।
पेड्रो ट्रुजिलो

V2.121.3 अन्य संस्करणों पर निश्चित नहीं है
rogerdpack

32

उपरोक्त समाधानों के अलावा, एक और "COMMON" तरीका है - सीधे लिनक्स मशीन से सबसे बड़े अंतरिक्ष उपभोक्ता को हटा दें। आप निम्न चरणों का पालन कर सकते हैं:

  1. जेनकिंस मशीन (पुट्टी) में लॉगिन करें यहां छवि विवरण दर्ज करें
  2. जेनकींस स्थापना पथ के लिए सीडी

छिपे हुए फ़ोल्डर को भी सूचीबद्ध करने के लिए ls -lart का उपयोग करते हुए, आमतौर पर जेनकिन इंस्टॉलेशन को .jenkins / फ़ोल्डर में रखा जाता है

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx  4096 Feb  8 02:08 .jenkins/
  1. फ़ोल्डर रिक्त स्थान की सूची बनाएं

Use df -h उच्च स्तर में डिस्क स्थान दिखाने के लिए

du -sh ./*/ वर्तमान पथ में प्रत्येक सबफ़ोल्डर के लिए कुल मेमोरी को सूचीबद्ध करने के लिए।

du -a /etc/ | sort -n -r | head -n 10 शीर्ष 10 निर्देशिकाओं को डिस्क स्थान / आदि में खाने की सूची देगा

  1. पुराने बिल्ड या अन्य बड़े आकार के फ़ोल्डर को हटाएं

आम तौर पर ./job/ फ़ोल्डर या ./workspace/ फ़ोल्डर सबसे बड़ा फ़ोल्डर हो सकता है। कृपया अंदर जाएं और अपनी आवश्यकता के आधार को हटा दें (संपूर्ण फ़ोल्डर को न हटाएं)।

rm -rf theFolderToDelete

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


3
निश्चित नहीं है कि मतदान क्यों हुआ। यह जेनकींस के प्रवेश के लिए एक अच्छा विकल्प लगता है। "केवल पढ़ने वाले" उपयोगकर्ताओं के लिए सहमत नहीं हैं।
साकेत

1. यह वास्तव में पूछे गए सवाल का जवाब नहीं देता है और 2. मेरा जेनकींस सर्वर विंडोज पर चल रहा है।
मज्गार्ड

10
@mjaggard सवाल किसी और से पूछा गया था और उन्होंने उल्लेख नहीं किया कि क्या यह केवल विंडोज के लिए है। साथ ही उन्होंने पूछा कि कार्यक्षेत्र की सफाई कैसे करें (फ्रंटेंड / क्लाइंट तक सीमित नहीं)। क्या मुझे यहाँ कुछ भी याद आ रहा है?
सैकत

4
मैं पूरी तरह से @takias से सहमत हूं, यह प्रश्न के लिए एक मान्य उत्तर लगता है। और एक अच्छा अगर आपके पास इसे करने की पर्याप्त अनुमति है।
फोनिक्स

1
यह "मैं एक GNU / लिनक्स मशीन पर स्थान कैसे पुनर्प्राप्त करता हूं" का जवाब है, जेनकिंस विशिष्ट नहीं।
फेलिप अल्वारेज

21

कार्यक्षेत्र क्लीनअप प्लगिन

जेनकिंस फ़ाइल में जोड़ें

cleanWs()

बिल्ड पूर्ण होने के बाद यह कार्यक्षेत्र को हटा देगा


4
मैं वास्तव में इस जवाब की सराहना करता हूं क्योंकि मेरे पास अन्य उत्तरों से स्थापित प्लगइन था लेकिन यह वही है जो इसे मेरे सेटअप के लिए काम करने के लिए मिला है। इसके साथ, मैंने अन्य उत्तरों में उसी प्लगइन के लिंक का अनुसरण किया, लेकिन cleanWs()मेरे पास जोड़ने के लिए सिंटैक्स के रूप में प्लगइन लैंडिंग पृष्ठ पर मौजूद नहीं था Jenkinsfile
आर्थर वेबर

20

महत्वपूर्ण: जब तक नौकरी नहीं चल रही है तब तक किसी दिए गए जेनकिंस नौकरी के लिए कार्यक्षेत्र को निकालना सुरक्षित है!

नोट: मैं मान रहा हूँ कि आपका $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 सबसे बड़े कार्यक्षेत्रों की सफाई करें

यह दो का उपयोग करता है और सबसे बड़े से सबसे छोटे क्रम में कार्यक्षेत्रों को सूचीबद्ध करने के लिए उपयोग करता है। फिर, यह पहले 10 को हथियाने के लिए सिर का उपयोग करता है:

du -d 1 /var/jenkins_home/workspace \
  | sort -n -r \
  | head -n 10 \
  | xargs -I {} rm -rf /var/jenkins_home/workspace/{}

2
यह खतरनाक है क्योंकि नौकरी उन कार्यक्षेत्रों का उपयोग कर सकती है।
ऐलेब

13

आप नीचे दी गई स्क्रिप्ट को प्रबंधित करें 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")
  }
}

यह मेरे लिए काम नहीं करता है, यह java.lang.NullPointerException को दर्शाता है: अशक्त वस्तु पर संपत्ति 'आइटम' नहीं मिल सकती।
विंसेंट गेरिस

3

यह मानते हुए कि वर्तमान नौकरी के कार्यक्षेत्र की सफाई के बारे में, आप दौड़ सकते हैं:

test -n "$WORKSPACE" && rm -rf "$WORKSPACE"/*

2

टिप्पणी करने की अनुमति नहीं है, इसलिए:

उपेन का जवाब ठीक काम करता है, लेकिन अगर आपके पास जेनकिंस पाइपलाइन जॉब्स फ्रीस्टाइल जॉब्स के साथ मिश्रित नहीं है। पाइपलाइन जॉब्स पर 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")


1

ऊपर बताए गए विकल्प दिखाई देने से पहले आपको इस प्लगइन को इंस्टॉल करना होगा

कार्यक्षेत्र क्लीनअप प्लगिन

यह प्लगइन किसी भी चरण (स्रोत नियंत्रण) चलाने से पहले आपको संपूर्ण कार्यक्षेत्र को हटाने की अनुमति देने के लिए सभी कार्य कॉन्फ़िगर करने के लिए चेक बॉक्स जोड़ता है

यह सुनिश्चित करने के लिए उपयोगी है कि आप हमेशा एक ज्ञात बिंदु से शुरू करते हैं, यह सुनिश्चित करने के लिए कि आप कैसे निर्माण करेंगे


3
कृपया कुछ जानकारी जोड़ें जिससे आपका लिंक जुड़ा हो। लिंक-केवल उत्तर एसओ में हम नहीं देख रहे हैं! :)
चिलियन

2
यह जोड़ने की कोई अधिक जानकारी नहीं है कि यह उत्तर पहले से ही कवर नहीं किया गया है। वास्तव में यह बहुत कम है
लियाम

1

इसे करने का एक विकल्प है। कॉन्फ़िगर करें -> पोस्ट-बिल्ड एक्शन
विकल्प कम से कम जेनकींस संस्करण 2.236 में डिफ़ॉल्ट रूप से आता है


0

यदि आप केवल एक dir (या फ़ाइल) को निकालना चाहते हैं, तो आप Groovy और मैनेज जेनकींस का उपयोग कर सकते हैं → लिपियों कंसोल एक स्क्रिप्ट चलाते हैं जो इसे हटा देता है।

उदाहरण के लिए, आप निम्न फ़ाइलों को देख सकते हैं:

dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
  println(it)
}

और फिर, जब आपके पास वह फ़ोल्डर dhहो जिसे आप हटाना चाहते हैं , तो आप बस अगले कोड को जोड़ सकते हैं:

dh.deleteDir()

और इसे हटा दिया जाएगा।

नोट: उदाहरण में दिखाया गया रास्ता एक बिटनामी जेन्किन्स इंस्टॉलेशन के लिए है, आपका अलग हो सकता है।

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