জেনকিন্স - কাজের মধ্যে ভেরিয়েবল পাস?


88

জেনকিনে আমার দুটি কাজ আছে, দুজনেরই একই প্যারামিটারের প্রয়োজন।

আমি কীভাবে প্যারামিটার দিয়ে প্রথম কাজ চালাতে পারি যাতে এটি যখন দ্বিতীয় কাজটি ট্রিগার করে, একই পরামিতিটি ব্যবহার করা হয়?


আমরা অনেকগুলি উপায়ে ব্যবহার করতে পারি: একটি সর্বোত্তম উপায় হ'ল বর্তমান কাজের প্যারামিটারগুলি ব্যবহার করা, বা ট্রিগার ডাউনস্ট্রিম
জবটিতে

4
এই শিরোনাম তাই বিভ্রান্তিকর। কীভাবে এই "কাজের মধ্যে পরিবর্তনশীল ভেরিয়েবল?" এছাড়াও গৃহীত উত্তর একটি প্লাগইন। অভিনব যে!
রাকিব

উত্তর:


73

আপনি প্যারামিটারাইজড ট্রিগার প্লাগইন ব্যবহার করতে পারেন যা আপনাকে এক কাজ থেকে অন্য কাজে পরামিতিগুলি পাস করতে দেয়।

আপ স্ট্রিম থেকে ডাউন স্ট্রিমে আপনি এই প্যারামিটারটি যুক্ত করতে হবে।


10
হাই হিসাবে দুঃখিত হিসাবে শব্দ করার জন্য দুঃখিত, তবে কেউ যদি প্যারামিটারাইজড ট্রিগার প্লাগইনটি কীভাবে এটি ব্যবহার করবেন তার বিশদ সহ এটি সম্পাদনা করতে পারে?
ফাদি

10
পার্শ্ব দ্রষ্টব্য: ব্যাশ স্ক্রিপ্ট বিভাগে তৈরি রফতানি পরিবেশের ভেরিয়েবলগুলি আউটপুট প্যারামিটারগুলিতে প্রতিস্থাপনের জন্য যোগ্য বলে মনে হচ্ছে না (উদাহরণস্বরূপ 'এক্সপোর্ট ভার্সন' 'UPSTREAM_VERSION = $ সংস্করণ' সঠিক মান গ্রহণ করবে না; এটি ঠিক পায় পরিবর্তে '$ সংস্করণ')।
মার্ক ম্যাকেন্না

21
এই উত্তরটি অপর্যাপ্ত
তারাবতে

6
আমি সম্মত হই যে কীভাবে লক্ষ্যবস্তুতে পরামিতিগুলি পাস করতে হবে তার এক ধরণের উদাহরণ থাকা উচিত। বর্তমান প্যারামিটারাইজড ট্রিগার প্লাগইন পৃষ্ঠা এটি সম্পর্কে ভাল তথ্য দেয় না। প্যারামিটারগুলি পাস করার ক্ষেত্রে আপনার কী ধরনের সিনট্যাক্স ব্যবহার করা উচিত তা উদাহরণস্বরূপ থাকতে পারে।
skrii

4
প্লাগইনটি আর কাজ করবে বলে মনে হচ্ছে না। উন্মুক্ত সমস্যার দীর্ঘ তালিকা দেখুন । আমি এই প্লাগইনটি দিয়ে কোনও পরামিতি মানগুলি পাস করতে পারি না। অন্য কোন সমাধান?
মার্কাস এল

38

1. পোষ্ট-বিল্ড অ্যাকশনগুলি> নির্বাচন করুন "অন্যান্য প্রকল্পের উপর প্যারামিটারাইজড বিল্ড ট্রিগার" নির্বাচন করুন

2. মান সহ পরিবেশের পরিবর্তনশীল প্রবেশ করুন.ভ্যালু জেনকিনস বিল্ড পরামিতিও হতে পারে।

বিস্তারিত পদক্ষেপগুলি এখানে দেখা যাবে: -

https://itisatechiesworld.wordpress.com/jenkins-related-articles/jenkins-configration/jenkins-passing-a-parameter-from-one-job-to-another/

আশা করি এটি সহায়ক :)


এই উত্তরটি ওপিকে কোনও প্লাগইন প্রয়োজন না করে বা ডিএসএল ব্যবহার না করেই প্রশ্নের উত্তর দেয় question
বিটিসি

8
এফওয়াইআই, এই উত্তরটির এখনও প্লাগইন দরকার।
থমাস লি

প্লাগইন দুর্দান্ত হয় তবে এটি চালিত শেল কমান্ড বিভাগে নির্ধারিত ভেরিয়েবল মানগুলি পাস করতে পারে না।
তারা প্রসাদ গুরুং

25

এখানে গৃহীত উত্তর আমার ব্যবহারের ক্ষেত্রে কাজ করে না। আমার একটি কাজের গতিশীল পরামিতি তৈরি করতে এবং অন্যটিতে পাস করার দরকার ছিল। হিসাবে মার্ক McKenna উল্লেখ সেখানে আপাতদৃষ্টিতে পোস্ট বিল্ড কর্মের জন্য একটি শেল বিল্ড পদক্ষেপ থেকে একটি পরিবর্তনশীল রপ্তানি করতে কোনও উপায় নেই।

আমি প্যারামিটারাইজড ট্রিগার প্লাগইন ব্যবহার করে একটি ফাইলের মান লিখতে এবং সেই ফাইলটিকে 'পোস্ট-বিল্ড অ্যাকশন যুক্ত করুন' -> 'ট্রিগার প্যারামিটারাইজড বিল্ড ...' এর মাধ্যমে 'প্যারামিটার যুক্ত করুন' নির্বাচন করে - এর মাধ্যমে আমদানি করার জন্য প্যারামিটার হিসাবে ব্যবহার করে একটি কার্যকারিতা অর্জন করেছি - > 'বৈশিষ্ট্য ফাইল থেকে পরামিতি'।


এই আমার প্রয়োজন ছিল। ধন্যবাদ
ভাগ্যটাইক্সি

আপনি যদি জেনকিনস ২.x পাইপলাইন ব্যবহার করতে ইচ্ছুক হন তবে আপনি কাজের মধ্যে রাষ্ট্রীয় ডেটা অনুলিপি করতে WritFile / stash-> আনস্ট্যাশ / রিডফিল ব্যবহার করতে পারেন। slideshare.net/ericlongtx/… উদাহরণস্বরূপ চেকআউট স্লাইড 21।
siesta

আপনি যদি শেল ভেরিয়েবলগুলি পাস করতে চান তবে এটি প্রয়োজন। এই উত্তর জন্য অনেক প্রশংসা।
কার্ল ওয়াইনরাইট

18

আমি মনে করি উপরের উত্তরটির কিছু আপডেট দরকার:

আমি আমার উজানে নির্মিত শিল্পকলাগুলি সঞ্চয় করার জন্য একটি গতিশীল ডিরেক্টরি তৈরি করার চেষ্টা করছিলাম তাই আমি আমার প্রবাহের চাকরির বিল্ড নম্বরটি ডাউন স্ট্রিম জবটিতে পাস করতে চেয়েছিলাম উপরের পদক্ষেপগুলি চেষ্টা করেছিলাম কিন্তু এটি কার্যকর করতে পারেনি। এটি কীভাবে কাজ করেছে তা এখানে:

  1. আমি কপিরাইট আর্টিক্স প্লাগইন ব্যবহার করে আমার বর্তমান কাজ থেকে নিদর্শনগুলি অনুলিপি করেছি।
  2. পোস্ট স্ট্রিম জবের পদক্ষেপের পদক্ষেপে আমি "SOURCE_BUILD_NUMBER = $ U BUILD_NUMBER}" এর মতো ভেরিয়েবল যুক্ত করেছি এবং ডাউন স্ট্রিম জবটি ট্রিগার করতে এটি কনফিগার করেছি।
  3. আমার প্রবাহিত চাকরীটি ডিরেক্টরি তৈরি করতে $ SOURCE_BUILD_NUMBER পেতে সক্ষম হচ্ছিল ব্যতীত সবকিছুই কাজ করেছিল।
  4. সুতরাং আমি জানতে পেরেছি যে এই পরিবর্তনশীলটি ব্যবহার করতে আমাকে নীচের চিত্রের মতো প্যারামিটার ভেরিয়েবল হিসাবে ডাউন স্ট্রিম জবটিতে একই পরিবর্তনশীলটি সংজ্ঞায়িত করতে হবে:

এখানে চিত্র বর্ণনা লিখুন

এটি হ'ল জেনকিন্সের নতুন সংস্করণটির আপনাকেও ডাউন স্ট্রিম কাজের ক্ষেত্রে পরিবর্তনশীলটি সংজ্ঞায়িত করতে হবে। আমি আশা করি এটি সহায়ক।


সম্পূর্ণ একমত. এটি একটি বাধ্যতামূলক আপডেট যা 100% প্রাথমিক উত্তরটি সম্পূর্ণ করে।
কোডস্লেভ

আমি আরও দুটি আপডভয়েটেড অপশনের চেষ্টা করেছিলাম কিন্তু উপরের ৪ র্থ ধাপে বর্ণিত অতিরিক্ত কনফিগারেশন যোগ না করা পর্যন্ত তারা দু'জনেরই কাজ হয়নি। এটির কাজ করার জন্য আমার অনুলিপি তৈরি করা উচিত নয় enabled
জেফ ফল

10

(সহ গুগলারের জন্য)

আপনি যদি বিল্ড ফ্লো প্লাগইন দিয়ে একটি গুরুতর পাইপলাইন তৈরি করে থাকেন তবে আপনি ডিএসএল এর সাথে কাজের মধ্যে প্যারামিটারগুলি এভাবে পাস করতে পারেন:

এটি অন্য চাকরিতে পাস করার জন্য একটি উপলভ্য স্ট্রিং প্যারামিটার "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 '------------------------------------'

বিল্ড ফ্লো প্লাগইনটি অবহিত করা
সিআর

7

আমি এখনও মন্তব্য করতে পারি না বলে নাইজেল কার্বির সাথে আমার উত্তরটি যুক্ত করুন:

একটি গতিশীলভাবে তৈরি প্যারামিটারটি পাস করার জন্য, আপনি 'এক্সিকিউট শেল' টাইলের মধ্যে পরিবর্তনশীলটিও রফতানি করতে পারেন এবং তারপরে এটি 'অন্যান্য প্রকল্পের উপর ট্রিগার প্যারামিটারাইজড বিল্ডের মাধ্যমে পাস করতে পারেন' => 'পূর্বনির্ধারিত পরামিতি "=>' YOUR_VAR = $ YOUR_VAR 'দিন। আমার দলটি বিল্ড জব থেকে ডিপ্লোমেন্ট কাজের ক্ষেত্রে এনপিএম প্যাকেজ সংস্করণটি পাস করার জন্য এই বৈশিষ্ট্যটি ব্যবহার করে

আপডেট: উপরে কেবল জেনকিনস ইনজেকশন পরামিতিগুলির জন্য কাজ করে, শেল থেকে তৈরি প্যারামিটারগুলিতে এখনও একই পদ্ধতি ব্যবহার করা দরকার। যেমন প্রতিধ্বনি YOUR_VAR = $ OUR YOUR_VAR}> ভেরিয়েবল.প্রপার্টি এবং সেই ফাইলটিকে প্রবাহিত করুন


3

যখন আমি ডাউন স্ট্রিম রুন্ডেক চাকরিতে কোনও পম সংস্করণটি পাস করতে হয়েছিলাম তখন আমি একই সমস্যার মুখোমুখি হয়েছিলাম।

আমি যা করেছি, কোনও বৈশিষ্ট্য ফাইলের মাধ্যমে প্যারামিটার ইঞ্জেকশন ব্যবহার করছিলাম:

1) শেল মাধ্যমে বৈশিষ্ট্য ফাইলে সম্পত্তি তৈরি করা:

ক্রিয়া তৈরি করুন:

  • একটি শেল স্ক্রিপ্ট কার্যকর করুন
  • পরিবেশের ভেরিয়েবল ইনজেক্ট করুন

যেমন: বৈশিষ্ট্য সংজ্ঞা

2) ডাউন স্ট্রিম কাজের সংজ্ঞায়িত বৈশিষ্ট্যগুলি পাস করা: পোস্ট বিল্ড অ্যাকশনগুলি:

  • অন্যান্য প্রকল্পের উপর ট্রিগার প্যারামিটারাইজড বিল্ড
  • পরামিতি যুক্ত করুন: বর্তমান বিল্ড পরামিতি
  • পরামিতি যুক্ত করুন: পূর্বনির্ধারিত পরামিতি

যেমন: প্রপার্টি প্রেরণ

3) তখন ডাউন স্ট্রিম রুন্ডেক কাজের মতো $ POM_VERSION ব্যবহার করা সম্ভব হয়েছিল।

/! \ জেনকিন্স সংস্করণ: 1.636

/! Some কোনও কারণে ট্রিগারযুক্ত বিল্ড তৈরি করার সময়, সম্পত্তিগুলি পাস করার জন্য 'কারেন্ট বিল্ড প্যারামিটার' বিকল্প যুক্ত করা দরকার ছিল।


সম্পাদনা: আমি যা লিখেছি তাতে একটি ব্লপার খুঁজে পেয়েছি। বৈশিষ্ট্য সংজ্ঞায় এটি হওয়া উচিত ছিল: প্রতিধ্বনি POM_VERSION = OM POM_VERSION> play.properties এবং না: প্রতিধ্বনি $ POM_VERSION >> play.properties সে সম্পর্কে দুঃখিত।
এলি মউস

2

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

এই ক্ষেত্রে, আমি একটি বৈশিষ্ট্য ফাইলে মানগুলি আউটপুট দেওয়ার পক্ষে এবং তারপরে ইনজেকশন দিয়েছি যে যাই হোক না কেন EnvInject প্লাগইন ব্যবহার করে আমার যে চাকরিতে প্রয়োজন । এটি গতিশীলভাবে করা যেতে পারে, যা উপরের উত্তর থেকে প্যারামিটারাইজড কাজগুলি এখনও ব্যবহৃত হয়েছিল এমন সমস্যা থেকে সমাধানের অন্য উপায়। এই সমাধানটি বেশ কয়েকটি পরিস্থিতিতে খুব ভালভাবে স্কেল করে।


1

এটি করতে আপনি হডসন গ্রোভী নির্মাতা ব্যবহার করতে পারেন ।

পাইপলাইনে প্রথম কাজ

এখানে চিত্র বর্ণনা লিখুন

পাইপলাইনে দ্বিতীয় কাজ

এখানে চিত্র বর্ণনা লিখুন


4
দুটি চিত্র এবং একটি বাহ্যিক লিঙ্কের উপর ভিত্তি করে একটি উত্তর খুব সহায়ক উত্তর নয়
উইল বার্নওয়েল

0

আমি এটি খুঁজে বের!

প্রায় 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 ব্যবহার করতে হবে

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