জেনকিনস: জেনকিন্স ওয়ার্কস্পেস পরিষ্কার করার কোনও উপায় আছে কি?


106

আমি কীভাবে জেনকিনসে কর্মক্ষেত্রটি পরিষ্কার করতে পারি? আমি AccuRevসংস্করণ নিয়ন্ত্রণ সরঞ্জাম হিসাবে ব্যবহার করছি ।

আমি freestyleজেনকিনসে প্রজেক্ট তৈরি করেছি ।

উত্তর:


97

জেনকিন্সে ওয়ার্কস্পেস পরিষ্কার করার একটি উপায় রয়েছে। আপনি বিল্ড করার আগে বা বিল্ড করার পরে ওয়ার্কস্পেসটি পরিষ্কার করতে পারেন।

প্রথমে ওয়ার্কস্পেস ক্লিনআপ প্লাগইন ইনস্টল করুন

বিল্ড করার আগে কর্মক্ষেত্রটি পরিষ্কার করতে: পরিবেশ তৈরির অধীনে , বিল্ড শুরুর আগে ওয়ার্কস্পেস মুছুন এমন বাক্সটি চেক করুন

বিল্ড পর কর্মক্ষেত্র পরিষ্কার করতে: শিরোনামের নীচে পোস্ট-বিল্ড পদক্ষেপ নির্বাচন মুছে ফেলুন কর্মক্ষেত্র যখন বিল্ড সম্পন্ন করা হয় থেকে যোগ পোস্ট-বিল্ড পদক্ষেপ ড্রপ-ডাউন মেনু।


অনেক অনেক ধন্যবাদ নগেন্দ্র। আমি ওয়ার্কস্পেস ক্লিনআপ প্লাগইন ব্যবহার করে এই সমস্যাটি সমাধান করতে সক্ষম।
কার্তিক

আমি যদি ওয়ার্কস্পেস পরিষ্কার না করি তবে কী হবে? এটি কি দূরবর্তী ইউআরএল থেকে পরিবর্তন আনছে বা কেবল একই জিনিসটি বার বার তৈরি করছে?
আলফাগুই

@ আলফাগু জেনকিনস আপনার চালিত প্রতিটি বিল্ডের জন্য একটি নতুন ওয়ার্কস্পেস তৈরি করে, তাই আপনি যদি ওয়ার্কস্পেসগুলি মুছতে না পারেন তবে অবশেষে আপনার নোডের স্থান শেষ হয়ে যাবে।
মাইলস উইনথার

আমরা কি ওয়ার্কস্পেসটি পুনঃব্যবহার করতে পারি .. বর্তমানে যখন আমি কোডটি গিট সার্ভার থেকে এটি ক্লোন হয়ে যায় তখন বিল্ডটি শুরু করি। প্রক্রিয়াটি তৈরি করতে এটির জন্য একটি দীর্ঘ প্রক্রিয়া অতিরিক্ত যোগ করে! আমরা কি সর্বশেষতম প্রতিশ্রুতি চয়ন করতে পারি? @ মাইলসওয়ানথার
আলফাগুই

@alphaguy আপনি একটি রেফারেন্স রেপো ব্যবহার করতে পারেন এখানে উত্তর দেখুন: stackoverflow.com/a/9932036/6221831
মাইলস Winther

55

আপনি যদি নিজে নিজে এটি পরিষ্কার করতে চান তবে আমার জন্য আমার জেনকিন্স সংস্করণটি (কোনও অতিরিক্ত প্লাগইন ইনস্টল করা লাগেনি, তবে কে জানে), বাম কলামে একটি "ওয়ার্কস্পেস" লিঙ্ক রয়েছে, আপনার প্রকল্পে ক্লিক করুন, তারপরে "কর্মক্ষেত্র" এ, তারপরে বাম পাশে কলামে একটি "বর্তমান কর্মক্ষেত্রটি মোছা" লিঙ্কটি উপস্থিত হবে। স্ক্রিনশট


4
দুর্ভাগ্যক্রমে আমি তা দেখছি না। নিশ্চয়ই এটি প্লাগইন নয়?
জোচিম ব্রেটনার

4
হুম মনে হচ্ছে "ডিফল্টরূপে" ওয়ার্কস্পেস ক্লিনআপ প্লাগইন "ইনস্টল করা একটি প্লাগইন আসলেই রয়েছে" " যাইহোক, এটি অপসারণের পরে, আমার এখনও সেই লিঙ্কটি আছে এবং এটি এখনও কার্যকর হয় বলে মনে হচ্ছে। সুতরাং ... কোথা থেকে এসেছে তা নিশ্চিত নয়। ভি 2.121.3
রোজারডপ্যাক

4
এটি কাজ করেছে তবে আমাকে দু'বার ওয়ার্কস্পেসের লিঙ্কে ক্লিক করতে হয়েছিল: প্রথমটি "ওয়ার্কস্পেস" পৃষ্ঠায় যেতে হবে, দ্বিতীয়বার আসলে "বর্তমান কর্মক্ষেত্রটি মোছা" লিঙ্কটি দেখানো হবে। আমি অনুমান করি এটি এমন একটি তথ্য যা আপনি উত্তরে অন্তর্ভুক্ত করতে পারেন।
Gnafu

জেনকিন্স সংস্করণটি কোনটি? কারণ খনি এই বিকল্পটি দেখায় না (সম্ভবত আমার বয়স খুব পুরানো)।
পেড্রো ট্রুজিলো

ভি 2.121.3 অন্যান্য সংস্করণে নিশ্চিত নয়
রোজারডপ্যাক

34

উপরের সমাধানগুলির পাশাপাশি আরও একটি "সিএমএনএমএন" উপায় রয়েছে - লিনাক্স মেশিন থেকে বৃহত্তম স্থানের গ্রাহককে সরাসরি মুছুন। আপনি নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন:

  1. জেনকিন্স মেশিনে লগইন করুন (পুট্টি) এখানে চিত্র বর্ণনা লিখুন
  2. জেনকিন্স ইনস্টলেশন পথে সিডি করুন

লুকানো ফোল্ডারটিও তালিকাভুক্ত করতে এলএস-অ্যালার্ট ব্যবহার করে, সাধারণত জেনকিন ইনস্টলেশনটি জেনকিনস / ফোল্ডারে রাখা হয়

[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 / এ ডিস্কের স্থান খাওয়ার শীর্ষ 10 ডিরেক্টরি তালিকাবদ্ধ করবে

  1. পুরানো বিল্ড বা অন্যান্য বড় আকারের ফোল্ডার মুছুন

সাধারণত ./job/ ফোল্ডার বা। / ওয়ার্কস্পেস / ফোল্ডারটি বৃহত্তম ফোল্ডার হতে পারে। আপনার প্রয়োজনীয় ভিত্তিটি ভিতরে যান এবং মুছুন (পুরো ফোল্ডারটি মুছবেন না)।

rm -rf theFolderToDelete

এখানে চিত্র বর্ণনা লিখুন


4
কেন ভোট দিয়েছেন তা নিশ্চিত নয়। এটি জেনকিন্স প্রশাসকদের পক্ষে একটি ভাল বিকল্প বলে মনে হচ্ছে। "কেবল পঠনযোগ্য" ব্যবহারকারীদের জন্য সম্মত হন না।
সৈকত

১. এটি জিজ্ঞাসিত প্রশ্নের সত্যই উত্তর দেয় না এবং ২. আমার জেনকিন্স সার্ভারটি উইন্ডোজটিতে চলছে।
mjaggard

10
@ এমজাগার্ড এই প্রশ্নটি অন্য একজন জিজ্ঞাসা করেছিলেন এবং তিনি কেবল উইন্ডোজের জন্য কিনা তা উল্লেখ করেননি। এছাড়াও তিনি জিজ্ঞাসা করলেন কীভাবে কর্মক্ষেত্র পরিষ্কার করা যায় (সীমানা / ক্লায়েন্টের মধ্যে সীমাবদ্ধ নয়)। আমি কি এখানে স্পষ্ট কিছু মিস করছি?
সৈকত

4
আমি @ টাকিয়াসের সাথে পুরোপুরি একমত, প্রশ্নের প্রশ্নের এটি একটি বৈধ উত্তর বলে মনে হচ্ছে। আপনার কাছে এটি করার যথেষ্ট অনুমতি থাকলে একটি ভাল।
ফোনিক্স

4
এটি জেনকিন সুনির্দিষ্ট নয় "আমি কীভাবে জিএনইউ / লিনাক্স মেশিনে স্থান পুনরুদ্ধার করব" এর একটি উত্তর।
ফিলিপ আলভারেজ

23

গুরুত্বপূর্ণ: যতক্ষণ চাকরী বর্তমানে চলছে না ততক্ষণ প্রদত্ত জেনকিন্স কাজের জন্য কর্মক্ষেত্রটি সরিয়ে ফেলা নিরাপদ!

উল্লেখ্য: আমি অভিমানী করছি আপনার $JENKINS_HOMEডিফল্ট হিসাবে সেট করা হয়: /var/jenkins_home

একটি কর্মক্ষেত্র পরিষ্কার করুন

rm -rf /var/jenkins_home/workspaces/<workspace>

সমস্ত কর্মক্ষেত্র পরিষ্কার করুন

rm -rf /var/jenkins_home/workspaces/*

কয়েকটি ব্যতিক্রম সহ সমস্ত কর্মক্ষেত্র পরিষ্কার করুন

একটি শ্বেত তালিকা তৈরি করতে এটি গ্রেপ ব্যবহার করে:

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/{}

4
এটি বিপজ্জনক কারণ চাকরিগুলি সেই কর্মপরিধিগুলি ব্যবহার করতে পারে।
আলেব

22

ওয়ার্কস্পেস ক্লিনআপ প্লাগইন

জেনকিন্স ফাইল অ্যাড

cleanWs()

বিল্ডটি সম্পূর্ণ হওয়ার পরে এটি ওয়ার্কস্পেসটি মুছে ফেলবে


4
আমি এই উত্তরটির সত্যই প্রশংসা করি কারণ আমি অন্যান্য উত্তরগুলি থেকে প্লাগইন ইনস্টল করেছিলাম তবে এটি আমার সেটআপের জন্য কাজ করতে পেল। এতে যোগ করার সাথে সাথে, আমি অন্য উত্তরে একই প্লাগইনটির লিঙ্কগুলি অনুসরণ করেছি, তবে cleanWs()আমার যুক্ত করতে সিনট্যাক্স হিসাবে প্লাগইন অবতরণ পৃষ্ঠায় উপস্থিত ছিল না Jenkinsfile
আর্থার ওয়েবর্গ

13

আপনি একটি শটে সমস্ত কাজের ওয়ার্কস্পেসগুলি মোছার জন্য জেনকিনসস্ক্রিপ্টস কনসোলটি পরিচালনা করতে নীচের স্ক্রিপ্টটি চালাতে পারেন । ফাইল সিস্টেমে জায়গা পরিষ্কার করার জন্য আমরা এটি করেছি।

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")
  }
}

এটি আমার পক্ষে কাজ করে না, এটি জাভা.এলং দেখায় ull
ভিনসেন্ট গেরিস

এই স্ক্রিপ্টটি আমার পক্ষে কিছুই করেনি। এটি "মুছে ফেলা ..." সহ আমার প্রকল্পগুলির তালিকা দেখায়, তবে কিছুই পরিষ্কার করে না। ওয়ার্কস্পেস ডিরেক্টরি পূর্ণ রয়েছে remains
সের্গেই বেলোগ্লাজভ

3

প্রশ্নটি ধরে নেওয়া বর্তমান কাজটির কর্মক্ষেত্র পরিষ্কার করার বিষয়ে, আপনি চালাতে পারেন:

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

2

মন্তব্য করার অনুমতি নেই, সুতরাং:

উপেনের উত্তরটি ঠিক কাজ করে, তবে আপনার জেনকিনস পাইপলাইন জবস ফ্রিস্টাইল জবসের সাথে মিশে থাকলে তা নয় not পাইপলাইন জবসে ডোউইপ ওয়ার্কস্পেসের মতো কোনও পদ্ধতি নেই। সুতরাং আমি এগুলি এড়াতে স্ক্রিপ্টটি পরিবর্তন করেছি:

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

উপরে উল্লিখিত বিকল্পগুলি প্রদর্শিত হওয়ার আগে আপনাকে এই প্লাগইনটি ইনস্টল করতে হবে

ওয়ার্কস্পেস ক্লিনআপ প্লাগইন

এই প্লাগইনটি সমস্ত পদক্ষেপের কনফিগারেশনে চেক বাক্স যুক্ত করে যাতে কোনও পদক্ষেপ (ইনক উত্স নিয়ন্ত্রণ) চালুর আগে আপনাকে পুরো ওয়ার্কস্পেস মুছতে দেয় to

আপনি কীভাবে তৈরি করবেন তা গ্যারান্টি হিসাবে আপনি সর্বদা একটি পরিচিত পয়েন্ট থেকে শুরু করে তা নিশ্চিত করার জন্য এটি দরকারী


4
আপনার লিঙ্কটি রয়েছে এমন কিছু তথ্য দয়া করে যুক্ত করুন। কেবলমাত্র লিঙ্ক-উত্তর আমরা এসও-তে খুঁজছি তা নয়! :)
চিলিয়ন

4
এই উত্তরটির কোনও তথ্য নেই যা এই উত্তরটি ইতিমধ্যে coveredাকেনি। আসলে এটি যুক্ত হয় অনেক কম
লিয়াম

1

এটি করার একটি বিকল্প রয়েছে। কনফিগার করুন -> পোস্ট-বিল্ড অ্যাকশনগুলি
বিকল্পটি কমপক্ষে জেনকিন্স সংস্করণ ২.২236 এ ডিফল্টরূপে আসে


0

আপনি যদি কেবল একটি দির (বা ফাইল) সরাতে চান তবে আপনি গ্রোভি এবং জেনকিনস পরিচালনা করতে পারেন → স্ক্রিপ্টস কনসোল একটি স্ক্রিপ্ট চালান যা এটি সরিয়ে দেয়।

উদাহরণস্বরূপ, আপনি ফাইলগুলি এ দিয়ে দেখতে পারেন:

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

এবং তারপরে, আপনি যখন ফোল্ডারটি মুছতে চান তখন আপনি dhকেবলমাত্র পরবর্তী কোডটি যুক্ত করতে পারেন:

dh.deleteDir()

এবং এটি মুছে ফেলা হবে।

দ্রষ্টব্য: উদাহরণে দেখানো পথটি বিটনামি জেনকিন্স ইনস্টলেশনের জন্য, আপনার আলাদা হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.