আপনি যখন কোনও ফ্রি স্টাইল প্রকল্প ব্যবহার করছেন তখন আপনি সেট করতে পারেন 20 মিনিটের পরে বিল্ডটি বাতিল করা যদি শেষ না হয়। জেনকিনস মাল্টি ব্রাঞ্চ পাইপলাইন প্রকল্পের মাধ্যমে এটি কীভাবে সম্ভব?
উত্তর:
আপনি সময়সীমা ধাপটি ব্যবহার করতে পারেন :
timeout(20) {
node {
sh 'foo'
}
}
আপনার যদি MINUTES এরTimeUnit
চেয়ে আলাদা প্রয়োজন হয় তবে আপনি যুক্তিটি সরবরাহ করতে পারেন :unit
timeout(time: 20, unit: 'SECONDS') {
সম্পাদনা আগস্ট 2018: আজকাল আরও সাধারণ ঘোষণামূলক পাইপলাইনগুলির সাথে (সহজেই শীর্ষ-স্তরের pipeline
কনস্ট্রাক্ট দ্বারা স্বীকৃত ) সময়সীমা options
বিভিন্ন স্তরে (সামগ্রিক পাইপলাইন বা প্রতি স্তরের প্রতি) ব্যবহার করে নির্দিষ্ট করা যেতে পারে :
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
stages { .. }
// ..
}
তবুও, আপনি যদি কোনও ঘোষণামূলক পাইপলাইনের একক পদক্ষেপে সময়সীমা প্রয়োগ করতে চান তবে এটি উপরে বর্ণিত হিসাবে ব্যবহার করা যেতে পারে।
def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
দু'বার নোড অর্জন করার জন্য একটি কৌতুকপূর্ণ উপায়। প্রথম বার বাইরের সময়সীমা সহ, দ্বিতীয় অভ্যন্তরীণ সময়সীমা সহ। আমি বৈশিষ্ট্যটিও মিস করছি।
একটি ডিক্লারেটিভ পাইপলাইনের জন্য বিকল্প-বিভাগে সময়সীমার ধাপটি ব্যবহার করার পরামর্শ দেওয়া হয় ।
নির্ধারিত সময়সীমা সহ ব্লকের অভ্যন্তরে কোডটি কার্যকর করে। যদি সময়সীমাটি পৌঁছে যায়, তবে একটি ব্যতিক্রম (org.jenkinsci.plugins.workflow.steps.FlowInterusedException) নিক্ষেপ করা হয়, যা বিল্ডটি বাতিল করে দেয় (যদি না এটি ধরা পড়ে এবং কোনওভাবে প্রক্রিয়াজাত না করা হয়)। ইউনিট alচ্ছিক তবে কয়েক মিনিটের ডিফল্ট।
সময়সীমা-ধাপে আপনি কনফিগার করতে পারেন এমন 3 টি প্যারামিটার রয়েছে:
সময় (প্রয়োজনীয়, পূর্বে)
ক্রিয়াকলাপ (alচ্ছিক, বুলিয়ান)
ইউনিট (alচ্ছিক, মানগুলি: ন্যানোসেকেন্ডস, মাইক্রোসেকেন্ডস, মিলিসেকেন্ডস, সেকেন্ডস, মিনিটস, আওয়ারস, দিন)
উদাহরণ:
timeout(time: 10) // would lead to a timeout of 10 minutes (MINUTES is default value)
timeout(time: 10, unit: 'SECONDS') // a 10 seconds timeout
timeout(time: 10, activity: false, unit: 'MILLISECONDS')
সরকারী জেনকিন্স ডকুমেন্টেশন একটি টাইমআউটের ব্যবহারের জন্য একটি খুব সুন্দর উদাহরণ রয়েছে:
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
activity
ডিফল্ট হিসাবে মিথ্যা আছে। কখন activity
মিথ্যা - সম্পূর্ণ কাজের জন্য true
সময়সীমা, ক্রিয়াকলাপের জন্য সময়সীমা (লগতে কোনও কিছু মুদ্রণের জন্য)।
timeout
একটি নির্দিষ্ট পর্যায়ে এমনভাবে যুক্ত করতে চাই যাতে পরবর্তী পর্যায়টি সুদৃfully়ভাবে চলুক। উপরের উদাহরণে, পাইপলাইন সময়সীমা শেষ হওয়ার পরে এবং পরবর্তী পর্যায়ে সম্পাদন করা হয় না। আমার প্রয়োজনীয়তা পূরণের জন্য কি কোনও উপায় আছে? প্রদত্ত পর্যায়ে সময়সীমা নির্ধারণের জন্য নমুনা কোড (অফিশিয়াল জেনকিন্স ডক থেকে):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ ধাপ রেফারেন্স ।