একটি নির্দিষ্ট জেনকিন্স কাজের জন্য কীভাবে "কিলসফটলি" সেট করবেন?


11

আমার জেনকিনস বিল্ড এবং পোস্ট-বিল্ড পদক্ষেপগুলির মধ্যে স্তব্ধ হয়ে থাকে।

কনসোল আউটপুটটি দেখায় যে সেখানে 6 মিনিটের অপেক্ষা রয়েছে (তবে আমি এক ঘন্টা পর্যন্ত অপেক্ষা করতে দেখেছি):

10:53:26 BUILD FAILED in 1m 7s
10:53:26 4 actionable tasks: 4 executed
10:53:26 Build step 'Invoke Gradle script' changed build result to FAILURE
10:53:26 Build step 'Invoke Gradle script' marked build as failure
11:09:29 [CucumberReport] Using Cucumber Reports version 4.9.0

আমি দেখেছি এই এবং এই অনুরূপ বিষয় আছে প্রশ্ন, এবং তারা বলে সমাধান সেটিং করা হয় -DSoftKillWaitSeconds=0মধ্যে jenkins.xml

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

সম্পাদনা করুন:

আমি যখন ম্যানুয়ালি এই কাজটি বাতিল করে দিই, [শসাবার রিপোর্ট] পদক্ষেপের আগে, শসাবারের প্রতিবেদনগুলি এখনও উত্পন্ন হয়।

টাইম-আউট কৌশলটি (টাইমআউট সেকেন্ড = 2) সেট করার সাথে সাথে বিল্ড এনভায়রনমেন্ট বিকল্পগুলিতে চেকবক্সটি আটকে থাকলে বিল্টটি বাতিল করতেও পরীক্ষা করেছিলাম No Activity

আমি যখন এই সেটিংসটি দিয়ে প্রকল্পটি তৈরি করব তখন বিল্ডটি ইতিহাসের পূর্ববর্তী হিসাবে প্রদর্শিত "0 সেকেন্ড পরে বাতিল" দিয়ে ব্যর্থ হবে তবে কনসোল আউটপুটটি একই হবে। (কিছুই পরিবর্তন হয় না, শসা রিপোর্টগুলি উত্পন্ন হবে তবে একটি নির্দিষ্ট সময়সীমা পেরিয়ে যাওয়ার পরে)।


প্যারামিটার দিয়ে আপনি কী অর্জন করতে চান? এটির জন্য আরও সহজ সমাধান হতে পারে।
মাইকেল কেমারজেল

আমি বিল্ড পর্বের পরে অপেক্ষা সময় কাটাতে চাই want আপনি কনসোল আউটপুট থেকে দেখতে পাচ্ছেন, বিল্ড এবং পোস্ট-বিল্ড পদক্ষেপগুলির মধ্যে 6 মিনিটের অপেক্ষা রয়েছে।
সাথি মিঃ

আপনি কি আপনার পাইপলাইনের কিছু অংশ সরবরাহ করতে পারেন? আমি সন্দেহ করি জেনকিনস কেবল আটকে আছে - এখানে কিছু ঘটতে হবে।
মাইকেল কেমারজেল

পাইপলাইনটির কোন অংশগুলির আগ্রহের বিষয়ে আপনি আরও সুনির্দিষ্ট হতে পারেন তাই আমি কিছু সম্পাদনা করতে ও ভাগ করতে পারি কারণ আমি প্রকৃত কোড ভাগ করতে পারছি না?
সাথি মিঃ

আপনি কি কেবল timeoutআপনার পাইপে কোনও বিকল্প সেট করতে পারবেন না ? আপনার পাইপের একটি সরল সংস্করণ অবশ্যই পোস্ট করা উচিত। কী ভুল হতে পারে "অনুমান করা" এটি কঠিন। এছাড়াও, এই প্রশ্নটি সম্ভবত ডিওপস.স্ট্যাকেক্সেঞ্জ
ডট

উত্তর:


4

এর জন্য একটি জব-নির্দিষ্ট মান নির্বাচন করা সম্ভব নয়SoftKillWaitSeconds (মানটি জেনকিন্স কোর থেকে এমন এক পর্যায়ে উত্পন্ন হয় যেখানে কাজের নাম জানা যায় না)।

আমার সুপারিশটি হ'ল আপনার চাকরিতে নিজেই অ্যাওর্ট হ্যান্ডলিং ঠিক করা , সুতরাং এটি "সফট কিল টাইমআউট" এর উপর নির্ভর করবে না। আপনি যদি ইউনিক্স-ইশ সিস্টেমে চালিয়ে যাচ্ছেন তবে আপনি এটি একটি নতুন প্রক্রিয়া গ্রুপে ( set -mব্যাশে) এবং (উদাহরণস্বরূপ) একটি সঠিক প্রস্থান ফাঁদ স্থাপন করে এটি নিশ্চিত করতে পারেন ensure


যেহেতু আমি জেনকিন্সে নতুন, আপনি কি "নতুন প্রসেস গ্রুপে চাকরী চালাচ্ছেন (ব্যাশ-এ সেট-এম) এবং (উদাহরণস্বরূপ) একটি সঠিক প্রস্থান ট্র্যাপ স্থাপনের বিষয়ে প্রসারিত করতে পারেন?
সাথি মিঃ

এটি প্রতি জে জিনকিনসের সাথে সম্পর্কিত নয়। আপনার চাকরিতে কোনও "এক্সিকিউট শেল" বিল্ড স্টেপ জড়িত থাকলে (বা আপনি যদি এটি এটি পরিবর্তন করতে পারেন তবে এটি ব্যবহার করতে পারেন) আপনি এই পদ্ধতির ব্যবহার করতে পারেন। তারপরে একটি নতুন প্রক্রিয়া গোষ্ঠী তৈরি করতে "সেট-এম" ব্যবহার করুন এবং গোষ্ঠীর সমস্ত প্রক্রিয়া নিহত হবে তা নিশ্চিত করতে এখানে দেখানো মত একটি ফাঁদ ব্যবহার করুন
অ্যালেক্স ও

3

আমরা বিল্ড-সময়সীমার প্লাগইন ব্যবহার করছেন সময়সীমার কৌশল সেট দিয়ে আটকে কাজ মারতে No Activityবা Absolute। আমার জন্য, আপনি ফ্রিস্টাইল প্রকল্পগুলি ব্যবহার করার সময় এটি একটি ভাল পদ্ধতির। আপনার বিল্ডটি "0 সেকেন্ড পরে বাতিল" হওয়ার কারণটি হ'ল সম্ভবত অসম্পূর্ণ শিশু প্রক্রিয়া রয়েছে। ডকুমেন্টেশন থেকে :

যেহেতু জাভা কেবল স্থির অবস্থানের সেটগুলিতে থ্রেডগুলিকে বাধা দিতে দেয়, কোনও বিল্ড কীভাবে স্তব্ধ হয় তার উপর নির্ভর করে অ্যাবস্ট অপারেশন কার্যকর নাও হতে পারে। উদাহরণ স্বরূপ,

  • জেনকিনস যদি শিশু প্রক্রিয়াগুলি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে থাকে তবে তা এখনই বাতিল করতে পারেন।
  • জেনকিনস যদি একটি অসীম লুপে আটকে থাকে তবে এটি কখনই বাতিল করা যাবে না।
  • যদি জেনকিনস জাভা ভিএম এর মধ্যে নেটওয়ার্ক বা আই / ও ফাইল করছে (যেমন লম্বা ফাইল কপি বা এসভিএন আপডেট) তবে এটি বাতিল করা যাবে না।

আপনি নিরঙ্কুশ সময়সীমা কৌশল চেষ্টা করতে পারেন। আপনি একটি বৈশ্বিক পরিবর্তনশীল সংজ্ঞায়িত করতে পারেন, যাতে আপনি চাকরিতে সময়সীমা মান পুনরায় না করেন:

  1. "জেনকিন্স পরিচালনা করুন"> "সিস্টেম কনফিগার করুন" এ যান।
  2. "বৈশ্বিক বৈশিষ্ট্য" এ "পরিবেশের পরিবর্তনশীল" পরীক্ষা করুন Check
  3. একটি পরিবেশের পরিবর্তনশীল নাম যুক্ত করুন = "GLOBAL_TIMEOUT_MINUTES" মান = "20"।
  4. একটি প্রকল্পের কনফিগারেশন পৃষ্ঠায় যান।
  5. "বিল্ড এনভায়রনমেন্ট" এ "বিল্ডটি আটকা পড়ে থাকলে তা বাতিল করুন" দেখুন।
  6. "সময়-বাইরে কৌশল" এর জন্য "নিখুঁত" নির্বাচন করুন। অবশ্যই, অন্যান্য কৌশল প্রযোজ্য।
  7. "টাইমআউট" এর জন্য "$ {GLOBAL_TIMEOUT_MINUTES।" সেট করুন।
  8. সময়সীমা অ্যাকশন সেট করুন "বিল্ডটি বাতিল করুন"।

যদি এটি কাজ না করে, আপনি লগগুলি https: // আপনার-জেনকিনস-সার্ভার / লগ বা থ্রেড ডাম্পে দেখার চেষ্টা করতে পারেন ।
প্লাগইনটির নতুন / পুরানো সংস্করণের কারণে হ্যাঙ্গিং হতে পারে। অসম্পূর্ণ শিশু প্রক্রিয়াগুলি কী কী তা অনুসন্ধান করার চেষ্টা করুন। সমস্যার কারণ হতে পারে এমন একটি সন্ধানের জন্য পোস্ট-বিল্ড ক্রিয়াগুলি একে অপরকে অক্ষম করার চেষ্টা করুন। আপনি /superuser/1401879/debugging- কি-happens-when-a-jenkins- বিল্ড- অনাকাঙ্ক্ষিতভাবে- বিরতি- or-hangs দেখতে পারেন


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