উত্তর:
আপনি deleteDir()
পাইপলাইন জেনকিনসফিলের শেষ পদক্ষেপ হিসাবে ব্যবহার করতে পারেন (ধরে নিচ্ছেন যে আপনি কার্য ডিরেক্টরিটি পরিবর্তন করেন নি)।
checkout scm
।
@ জোটজিনেস জেনকিন্স সংস্করণটির সাথে উল্লেখ করেছেন Like ২.74৪ , নীচে কাজ করে, কখন থেকে নিশ্চিত নয়, সম্ভবত কেউ যদি উপরের সংস্করণটি সম্পাদনা করতে এবং যোগ করতে পারে
cleanWs()
সঙ্গে, জেনকিন্স সংস্করণ 2.16 এবং কর্মস্থান পরিষ্কারের প্লাগইন , আমি আছে, আমি ব্যবহারের
step([$class: 'WsCleanup'])
কর্মক্ষেত্র মুছতে।
আপনি গিয়ে এটি দেখতে পারেন
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax
তারপরে নমুনা পদক্ষেপ থেকে "পদক্ষেপ: জেনারেল বিল্ড স্টেপ" নির্বাচন করুন এবং তারপরে বিল্ড স্টেপ থেকে "বিল্ড শেষ হয়ে গেলে ওয়ার্কস্পেস মুছুন" নির্বাচন করুন
উল্লিখিত সমাধানগুলি deleteDir()
এবং cleanWs()
(যদি ওয়ার্কস্পেস ক্লিনআপ প্লাগইন ব্যবহার করা হয় ) উভয়ই কাজ করে তবে অতিরিক্ত বিল্ড স্টেপে এটি ব্যবহারের সুপারিশটি সাধারণত পছন্দসই সমাধান হয় না । যদি বিল্ডটি ব্যর্থ হয় এবং পাইপলাইনটি বাতিল করে দেওয়া হয় তবে এই ক্লিনআপ-পর্যায়ে কখনও পৌঁছানো যায় না এবং তাই ব্যর্থ বিল্ডগুলিতে কর্মক্ষেত্রটি পরিষ্কার করা হয় না।
=> অধিকাংশ ক্ষেত্রেই আপনি সম্ভবত একটি এটা করা উচিত পোস্ট বিল্ট-পদক্ষেপ শর্ত মত always
:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
cleanWs()
}
}
}
cleanWs()
পদক্ষেপ হিসাবে দৌড়ানো পোস্ট বিল্ড আর্কাইভ কমান্ড চালুর আগে এগুলি মুছে ফেলবে। cleanWs()
সম্ভবত সর্বদা পোস্ট বিল্ড কমান্ড হিসাবে চালানো উচিত
post
অধ্যায়, cleanWs()
নিরাপদে মধ্যে রেখে দেওয়া যেতে পারে always
এই শর্তে কিন্তু সবচেয়ে নিরাপদ স্পট ভিতরে cleanup
শর্ত:post { cleanup { cleanWs() } }
আসলে ডিলিটডির ফাংশন পুনরাবৃত্তভাবে বর্তমান ডিরেক্টরি এবং এর সামগ্রীগুলি মুছে দেয়। প্রতীকী লিঙ্ক এবং জংশনগুলি অনুসরণ করা হবে না তবে সরানো হবে।
একটি ওয়ার্কস্পেসের একটি নির্দিষ্ট ডিরেক্টরি মুছতে মুছতে মুছতে মুছতে মুছতে মুছতে মুছতে মুছতে মুছতে মুছুন D
dir('directoryToDelete') {
deleteDir()
}
আমি মুছে ফেলা ডিয়ার () নিম্নলিখিত হিসাবে ব্যবহার করেছি:
post {
always {
deleteDir() /* clean up our workspace */
}
}
তবে, এরপরে আমাকে সর্বদা সফলতা বা ব্যর্থতা চালাতে হয়েছিল তবে আপনি পোস্টের শর্তটি অর্ডার করতে পারবেন না। বর্তমান অর্ডার সর্বদা, পরিবর্তিত, বাতিল, ব্যর্থতা, সাফল্য এবং তারপরে অস্থির।
যাইহোক, একটি খুব দরকারী পোস্ট শর্ত রয়েছে, ক্লিনআপ যা সর্বদা শেষ হয়, https://jenkins.io/doc/book/pipline/syntax/ দেখুন
সুতরাং শেষ পর্যন্ত আমার পোস্টটি নীচে ছিল:
post {
always {
}
success{
}
failure {
}
cleanup{
deleteDir()
}
}
আশা করি কিছু কোণার ক্ষেত্রে এটি সহায়ক হতে পারে
নিম্নলিখিত পাইপলাইন স্ক্রিপ্ট ব্যবহার:
pipeline {
agent { label "master" }
options { skipDefaultCheckout() }
stages {
stage('CleanWorkspace') {
steps {
cleanWs()
}
}
}
}
এই পদক্ষেপগুলি অনুসরণ করুন:
options { skipDefaultCheckout() }
একটু দ্রুত সঞ্চালনের জন্য।
আপনি যদি জেনকিনসে কাস্টম ওয়ার্কস্পেস ব্যবহার করেছেন তবে মুছে ফেলা ডায়ার @ টিএমপি ফোল্ডারটি মুছে ফেলবে না।
সুতরাং ওয়ার্কস্পেস ব্যবহারের সাথে @tmp মুছে ফেলার জন্য
pipeline {
agent {
node {
customWorkspace "/home/jenkins/jenkins_workspace/${JOB_NAME}_${BUILD_NUMBER}"
}
}
post {
cleanup {
/* clean up our workspace */
deleteDir()
/* clean up tmp directory */
dir("${workspace}@tmp") {
deleteDir()
}
/* clean up script directory */
dir("${workspace}@script") {
deleteDir()
}
}
}
}
এই স্নিপেটটি ডিফল্ট ওয়ার্কস্পেসের জন্যও কাজ করবে।
'ওয়াইপ ওয়ার্কস্পেস' এক্সটেনশনটি ব্যবহার করাও কাজ করবে বলে মনে হচ্ছে। এটির জন্য লম্বা ফর্মটি দরকার:
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions + [[$class: 'WipeWorkspace']],
userRemoteConfigs: scm.userRemoteConfigs
])
এখানে আরো বিস্তারিত: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-
এখানে গিটএসসিএম এক্সটেনশানগুলি পাওয়া যায়: https://github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl
পরিষ্কার করা : যেহেতু পাইপলাইনের পোস্ট বিভাগটি পাইপলাইনের কার্য সম্পাদনের শেষে চালানোর গ্যারান্টিযুক্ত তাই আমরা চূড়ান্তকরণ, বিজ্ঞপ্তি বা পাইপলাইনের অন্যান্য শেষ কার্য সম্পাদনের জন্য কিছু বিজ্ঞপ্তি বা অন্যান্য পদক্ষেপ যুক্ত করতে পারি।
pipeline {
agent any
stages {
stage('No-op') {
steps {
sh 'ls'
}
}
}
post {
cleanup {
echo 'One way or another, I have finished'
deleteDir() /* clean up our workspace */
}
}
}
আমার ক্ষেত্রে, আমি বিল্ডিংয়ের শুরুতে পুরানো ফাইলগুলি সাফ করতে চাই , তবে উত্স কোডটি যাচাই করা না হওয়ায় এটি সমস্যাযুক্ত।
আমার সমাধানটি হ'ল গিটকে কোনও ফাইল (শেষ বিল্ড থেকে) পরিষ্কার করতে বলা হয়েছে যা এটি সম্পর্কে জানে না:
sh "git clean -x -f"
এইভাবে আমি বিল্ড আউট ক্লিন শুরু করতে পারি, এবং যদি এটি ব্যর্থ হয় তবে কর্মক্ষেত্রটি পরিষ্কার হয় না এবং তাই সহজেই ডিবাজিযোগ্য।
জেনকিনস কুবারনেটস প্লাগইন ব্যবহার করার সময় বর্তমানে মুছে ফেলা () এবং ক্লিনডাব্লু () উভয়ই সঠিকভাবে কাজ করে না, পোড ওয়ার্কস্পেস মুছে ফেলা হয়েছে তবে মাস্টার ওয়ার্কস্পেস অবিরত রয়েছে
চেকআউট কেলেঙ্কারীর পূর্বে ওয়ার্কস্পেস পরিষ্কার করার জন্য আপনার যখন পদক্ষেপ রয়েছে তখন এটি স্ট্রেনস্ট শাখাগুলির জন্য সমস্যা হওয়া উচিত নয়। এটি মূলত একই কর্মক্ষেত্রটি বারবার পুনরায় ব্যবহার করবে: তবে মাল্টব্র্যাঞ্চ পাইপলাইনগুলি ব্যবহার করার সময় মাস্টার পুরো কর্মক্ষেত্র এবং গিট ডিরেক্টরিটি রাখে
আমি বিশ্বাস করি এটি জেনকিন্সের সাথে একটি সমস্যা হওয়া উচিত, এখানে কোনও আলোকপাত?