আমি সম্প্রতি আমার একটি হাডসন বিল্ডের কনফিগারেশন আপডেট করেছি। বিল্ডের ইতিহাস সিঙ্কের বাইরে। আমার বিল্ডিংয়ের ইতিহাস সাফ করার কোনও উপায় আছে?
অনুগ্রহ করে এবং ধন্যবাদ
আমি সম্প্রতি আমার একটি হাডসন বিল্ডের কনফিগারেশন আপডেট করেছি। বিল্ডের ইতিহাস সিঙ্কের বাইরে। আমার বিল্ডিংয়ের ইতিহাস সাফ করার কোনও উপায় আছে?
অনুগ্রহ করে এবং ধন্যবাদ
উত্তর:
আপনি যদি ডিস্ক থেকে হাডসন / পুনরায় লোড কনফিগারেশন পরিচালনা করে ক্লিক করেন তবে হাডসন সমস্ত বিল্ড ইতিহাসের ডেটা পুনরায় লোড করবেন।
ডিস্কে ডাটা বিশৃঙ্খলার সৃষ্টি হলে, আপনি আপনার% HUDSON_HOME% \ কাজ \ <যেতে হবে projectname > ডিরেক্টরি ও তারা হতে অনুমিত করছি বিল্ড ডিরেক্টরি ফিরিয়ে আনুন। তারপরে কনফিগার ডেটা পুনরায় লোড করুন।
আপনি কেবল সব বিল্ড ইতিহাস সরানো যাবে কিভাবে বলছি, তাহলে মুছে দিতে পারেন UI 'তে মাধ্যমে একের পর এক তৈরী করে যদি সেখানে মাত্র কয়েক, অথবা \ <% HUDSON_HOME% \ কাজ ফিরে যেতে projectname > ডিরেক্টরির করতে এবং মুছে সব সেখানে উপ-ডিরেক্টরি - তারা বিল্ডগুলির সাথে সম্পর্কিত। এরপরে পরিবর্তনগুলি কার্যকর হওয়ার জন্য পরিষেবাটি পুনরায় চালু করুন।
কোনও কাজের বিল্ড হিস্ট্রি https://github.com/jenkinsci/jenkins-scriptts/blob/master/scriptler/bulkDeleteBuilds.groovy মুছে ফেলার জন্য স্ক্রিপ্ট কনসোল (জেনকিনস> স্ক্রিপ্ট কনসোল পরিচালনা করুন) এবং এই স্ক্রিপ্টের মতো কিছু ব্যবহার করুন script
এই স্ক্রিপ্টটি ধরে নিয়েছে যে আপনি কেবল কয়েকটি বিস্তৃত বিল্ড মুছতে চান। প্রদত্ত কাজের জন্য সমস্ত বিল্ড মুছতে, এটি ব্যবহার করুন (পরীক্ষিত):
// 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 -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
উপরের মুছে ফেলা আমার জব এর জন্য # 1 থেকে # 56 তৈরি করে।
যদি জেনকিন্স উদাহরণে প্রমাণীকরণ সক্ষম করা থাকে তবে একটি ব্যবহারকারীর নাম এবং এপিআই টোকেন অবশ্যই এইভাবে সরবরাহ করা উচিত:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
এপিআই টোকেনটি /me/configure
জেনকিন্সের পৃষ্ঠা থেকে আনতে হবে । ব্যবহারকারীর নাম এবং এপিআই টোকেন উভয়ই প্রদর্শন করতে কেবল "شو এপিআই টোকেন ..." বোতামে ক্লিক করুন।
সম্পাদনা: প্রতিস্থাপন করতে থাকতে পারে doDeleteAll
দ্বারা doDelete
URL গুলিতে উপরে এই কাজ করতে, কনফিগারেশন বা ব্যবহৃত জেনকিন্স সংস্করণ উপর নির্ভর করে।
আপনি কেবলমাত্র সর্বশেষ 1 টি বিল্ডটি সংরক্ষণ করতে, কনফিগারেশনটি পুনরায় লোড করুন (যা পুরানো বিল্ডগুলি আবর্জনা উচিত) পুনরায় কনফিগারেশন সেটিংসটি আপনার পছন্দসই মানটিতে পরিবর্তন করতে পারেন।
আপনি যদি মাল্টিব্রাঞ্চপ্রজেক্টের বিল্ড হিস্ট্রি (উদাহরণস্বরূপ পাইপলাইন) সাফ করতে চান তবে আপনার জেনকিন্সের হোম পৃষ্ঠা Jen জেনকিন্স পরিচালনা করুন → স্ক্রিপ্ট কনসোলটিতে যান এবং নিম্নলিখিত স্ক্রিপ্টটি চালান:
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)
}
}
}
বিল্ডগুলি পরিষ্কার করার আরেকটি সহজ উপায় হ'ল আপনার কাজ শেষে বাতিল পুরানো প্লাগইন যুক্ত করা। সংরক্ষণের জন্য সর্বাধিক সংখ্যক বিল্ড সেট করুন এবং তারপরে আবার কাজটি চালান:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+ ওল্ড+ বিল্ড + প্লাগইন
%HUDSON_HOME%\jobs\<projectname>
মুছে ফেলা builds
dir এ যান এবং lastStable, lastSuccessful
লিঙ্কগুলি সরান , এবং nextBuildNumber
ফাইল সরান ।
উপরের পদক্ষেপগুলি করার পরে ইউআই থেকে নীচের লিঙ্কে যান
জেনকিন্স -> জেনকিন্স পরিচালনা করুন -> ডিস্ক থেকে কনফিগারেশন পুনরায় লোড করুন
এটি আপনার প্রয়োজন অনুসারে করবে
স্ক্রিপ্ট কনসোল পদ্ধতিটি ব্যবহার করে যদি ফোল্ডার পাত্রে চাকরীগুলি গোষ্ঠীভুক্ত করা হচ্ছে তবে তা বিবেচনায় নেওয়ার পরিবর্তে নিম্নলিখিতটি ব্যবহারের চেষ্টা করুন।
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
বা
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)