জেনকিনে আমার দুটি কাজ আছে, দুজনেরই একই প্যারামিটারের প্রয়োজন।
আমি কীভাবে প্যারামিটার দিয়ে প্রথম কাজ চালাতে পারি যাতে এটি যখন দ্বিতীয় কাজটি ট্রিগার করে, একই পরামিতিটি ব্যবহার করা হয়?
জেনকিনে আমার দুটি কাজ আছে, দুজনেরই একই প্যারামিটারের প্রয়োজন।
আমি কীভাবে প্যারামিটার দিয়ে প্রথম কাজ চালাতে পারি যাতে এটি যখন দ্বিতীয় কাজটি ট্রিগার করে, একই পরামিতিটি ব্যবহার করা হয়?
উত্তর:
আপনি প্যারামিটারাইজড ট্রিগার প্লাগইন ব্যবহার করতে পারেন যা আপনাকে এক কাজ থেকে অন্য কাজে পরামিতিগুলি পাস করতে দেয়।
আপ স্ট্রিম থেকে ডাউন স্ট্রিমে আপনি এই প্যারামিটারটি যুক্ত করতে হবে।
1. পোষ্ট-বিল্ড অ্যাকশনগুলি> নির্বাচন করুন "অন্যান্য প্রকল্পের উপর প্যারামিটারাইজড বিল্ড ট্রিগার" নির্বাচন করুন
2. মান সহ পরিবেশের পরিবর্তনশীল প্রবেশ করুন.ভ্যালু জেনকিনস বিল্ড পরামিতিও হতে পারে।
বিস্তারিত পদক্ষেপগুলি এখানে দেখা যাবে: -
আশা করি এটি সহায়ক :)
এখানে গৃহীত উত্তর আমার ব্যবহারের ক্ষেত্রে কাজ করে না। আমার একটি কাজের গতিশীল পরামিতি তৈরি করতে এবং অন্যটিতে পাস করার দরকার ছিল। হিসাবে মার্ক McKenna উল্লেখ সেখানে আপাতদৃষ্টিতে পোস্ট বিল্ড কর্মের জন্য একটি শেল বিল্ড পদক্ষেপ থেকে একটি পরিবর্তনশীল রপ্তানি করতে কোনও উপায় নেই।
আমি প্যারামিটারাইজড ট্রিগার প্লাগইন ব্যবহার করে একটি ফাইলের মান লিখতে এবং সেই ফাইলটিকে 'পোস্ট-বিল্ড অ্যাকশন যুক্ত করুন' -> 'ট্রিগার প্যারামিটারাইজড বিল্ড ...' এর মাধ্যমে 'প্যারামিটার যুক্ত করুন' নির্বাচন করে - এর মাধ্যমে আমদানি করার জন্য প্যারামিটার হিসাবে ব্যবহার করে একটি কার্যকারিতা অর্জন করেছি - > 'বৈশিষ্ট্য ফাইল থেকে পরামিতি'।
আমি মনে করি উপরের উত্তরটির কিছু আপডেট দরকার:
আমি আমার উজানে নির্মিত শিল্পকলাগুলি সঞ্চয় করার জন্য একটি গতিশীল ডিরেক্টরি তৈরি করার চেষ্টা করছিলাম তাই আমি আমার প্রবাহের চাকরির বিল্ড নম্বরটি ডাউন স্ট্রিম জবটিতে পাস করতে চেয়েছিলাম উপরের পদক্ষেপগুলি চেষ্টা করেছিলাম কিন্তু এটি কার্যকর করতে পারেনি। এটি কীভাবে কাজ করেছে তা এখানে:
এটি হ'ল জেনকিন্সের নতুন সংস্করণটির আপনাকেও ডাউন স্ট্রিম কাজের ক্ষেত্রে পরিবর্তনশীলটি সংজ্ঞায়িত করতে হবে। আমি আশা করি এটি সহায়ক।
(সহ গুগলারের জন্য)
আপনি যদি বিল্ড ফ্লো প্লাগইন দিয়ে একটি গুরুতর পাইপলাইন তৈরি করে থাকেন তবে আপনি ডিএসএল এর সাথে কাজের মধ্যে প্যারামিটারগুলি এভাবে পাস করতে পারেন:
এটি অন্য চাকরিতে পাস করার জন্য একটি উপলভ্য স্ট্রিং প্যারামিটার "CVS_TAG" হিসাবে ধরা হচ্ছে:
build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
// will be scheduled in parallel.
{ build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
{ build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])
উপলব্ধ ভেরিয়েবল / প্যারামগুলি প্রদর্শনের জন্য ইঙ্গিত:
// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'
আমি এখনও মন্তব্য করতে পারি না বলে নাইজেল কার্বির সাথে আমার উত্তরটি যুক্ত করুন:
একটি গতিশীলভাবে তৈরি প্যারামিটারটি পাস করার জন্য, আপনি 'এক্সিকিউট শেল' টাইলের মধ্যে পরিবর্তনশীলটিও রফতানি করতে পারেন এবং তারপরে এটি 'অন্যান্য প্রকল্পের উপর ট্রিগার প্যারামিটারাইজড বিল্ডের মাধ্যমে পাস করতে পারেন' => 'পূর্বনির্ধারিত পরামিতি "=>' YOUR_VAR = $ YOUR_VAR 'দিন। আমার দলটি বিল্ড জব থেকে ডিপ্লোমেন্ট কাজের ক্ষেত্রে এনপিএম প্যাকেজ সংস্করণটি পাস করার জন্য এই বৈশিষ্ট্যটি ব্যবহার করে
আপডেট: উপরে কেবল জেনকিনস ইনজেকশন পরামিতিগুলির জন্য কাজ করে, শেল থেকে তৈরি প্যারামিটারগুলিতে এখনও একই পদ্ধতি ব্যবহার করা দরকার। যেমন প্রতিধ্বনি YOUR_VAR = $ OUR YOUR_VAR}> ভেরিয়েবল.প্রপার্টি এবং সেই ফাইলটিকে প্রবাহিত করুন
যখন আমি ডাউন স্ট্রিম রুন্ডেক চাকরিতে কোনও পম সংস্করণটি পাস করতে হয়েছিলাম তখন আমি একই সমস্যার মুখোমুখি হয়েছিলাম।
আমি যা করেছি, কোনও বৈশিষ্ট্য ফাইলের মাধ্যমে প্যারামিটার ইঞ্জেকশন ব্যবহার করছিলাম:
1) শেল মাধ্যমে বৈশিষ্ট্য ফাইলে সম্পত্তি তৈরি করা:
ক্রিয়া তৈরি করুন:
যেমন: বৈশিষ্ট্য সংজ্ঞা
2) ডাউন স্ট্রিম কাজের সংজ্ঞায়িত বৈশিষ্ট্যগুলি পাস করা: পোস্ট বিল্ড অ্যাকশনগুলি:
যেমন: প্রপার্টি প্রেরণ
3) তখন ডাউন স্ট্রিম রুন্ডেক কাজের মতো $ POM_VERSION ব্যবহার করা সম্ভব হয়েছিল।
/! \ জেনকিন্স সংস্করণ: 1.636
/! Some কোনও কারণে ট্রিগারযুক্ত বিল্ড তৈরি করার সময়, সম্পত্তিগুলি পাস করার জন্য 'কারেন্ট বিল্ড প্যারামিটার' বিকল্প যুক্ত করা দরকার ছিল।
উত্তরগুলি পড়া, আমি পছন্দ করি এমন অন্য বিকল্পটি আমি দেখতে পাচ্ছি না এটির জন্য এটিও অফার করবে। আমি চাকরীর প্যারামিটারাইজেশন পছন্দ করি তবে এটি সর্বদা ভাল হয় না। আপনার যদি এমন কাজ থাকে যা সরাসরি প্রথম কাজের স্রোত নয় তবে পাইপলাইনটি আরও দূরে রাখে তবে আপনি পাইপলাইনের প্রতিটি কাজকে প্যারামিটারাইজ করতে চান না যাতে আপনি পুরোপুরি পরামিতিগুলি পাস করতে সক্ষম হন। বা যদি আপনার কাছে বিভিন্ন অন্যান্য বিভিন্ন চাকরীর দ্বারা ব্যবহৃত প্রচুর পরিমাণে প্যারামিটার থাকে (বিশেষত যারা পিতা বা মাতার সাথে আবশ্যক নয়) তবে আবার প্যারামিটারাইজেশন কাজ করে না।
এই ক্ষেত্রে, আমি একটি বৈশিষ্ট্য ফাইলে মানগুলি আউটপুট দেওয়ার পক্ষে এবং তারপরে ইনজেকশন দিয়েছি যে যাই হোক না কেন EnvInject প্লাগইন ব্যবহার করে আমার যে চাকরিতে প্রয়োজন । এটি গতিশীলভাবে করা যেতে পারে, যা উপরের উত্তর থেকে প্যারামিটারাইজড কাজগুলি এখনও ব্যবহৃত হয়েছিল এমন সমস্যা থেকে সমাধানের অন্য উপায়। এই সমাধানটি বেশ কয়েকটি পরিস্থিতিতে খুব ভালভাবে স্কেল করে।
আমি এটি খুঁজে বের!
প্রায় 2 ঘন্টা মূল্যমানের পরীক্ষা এবং ত্রুটি সহ, আমি এটি আবিষ্কার করেছি।
এই কাজ করে এবং এটি আপনি দূরবর্তী কাজগুলিতে ভেরিয়েবলগুলি পাস করার জন্য যা করেন:
def handle = triggerRemoteJob(remoteJenkinsName: 'remoteJenkins', job: 'RemoteJob' paramters: "param1=${env.PARAM1}\nparam2=${env.param2}")
দুটি পরামিতি পৃথক করতে \ n ব্যবহার করুন, কোনও স্পেস নেই ..
প্যারামিটারগুলির বিপরীতে: '' 'সাম্পারামস' ''
আমরা প্যারামিটারগুলি ব্যবহার করি: "সাম্পারামস"
"..." আমাদের পছন্দসই ভেরিয়েবলের মান দেয়। (এটি দুটি একক উদ্ধৃতি নয়, ডাবল উদ্ধৃতি)
'' '...' '' বা '...' আমাদের সেই মানগুলি পাবে না। (তিনটি একক উদ্ধৃতি বা মাত্র একক উদ্ধৃতি)
পাইপলাইন শুরু হওয়ার সাথে সাথে এখানে সমস্ত প্যারামিটারগুলি পরিবেশ environment} ব্লকে সংজ্ঞায়িত করা হয়েছে এবং প্রয়োজনীয় পর্যায়ে> পদক্ষেপে> স্ক্রিপ্টগুলিতে সংশোধন করা হয়েছে।
আমি এটিও পরীক্ষা করে দেখেছি যে আপনি যখন "..." ব্যবহার করেন তখন আপনি '' '...' ... '' '' '' 'বা' ... '..' ... 'বা কোনও সংমিশ্রণ ব্যবহার করতে পারবেন না এটা ...
এখানে ধরাটি হ'ল আপনি যখন প্যারামিটার বিভাগে "..." ব্যবহার করছেন, আপনি স্ট্রিং প্যারামিটারটি পাস করতে পারবেন না; উদাহরণস্বরূপ এই কাজ করবে না:
def handle = triggerRemoteJob(remoteJenkinsName: 'remoteJenkins', job: 'RemoteJob' paramters: "param1=${env.PARAM1}\nparam2='param2'")
যদি আপনি উপরের মতো কিছু পাস করতে চান তবে আপনাকে এনভায়রনমেন্ট ভেরিয়েবল প্যারাম 2 = 'প্যারাম 2' সেট করতে হবে এবং তারপরে রিমোট ট্রিগার প্লাগইন স্টেপের পরামিতি বিভাগে $ {env.param2 use ব্যবহার করতে হবে