TeamCity মধ্যে এজেন্ট প্রয়োজনীয়তা পরামিতি কিভাবে


2

মধ্যে TeamCity , প্রজেক্টের উপর ভিত্তি করে এজেন্ট প্রয়োজনীয়তা পরামিতি করা বা কনফিগারেশন পরামিতি নির্মাণ করা সম্ভব? উদাহরণস্বরূপ মান অন্তর্ভুক্ত করতে পারেন %...% বদল?

একটি উদাহরণ: আমরা একটি প্রকল্প পরামিতি আছে env.XXX_VERSION যা প্রকল্পের সমস্ত বিল্ড কনফিগারেশনগুলিতে XXX পণ্যটির প্রয়োজনীয় সংস্করণটি নির্দিষ্ট করে। আমরা তখন প্রকল্পের এই প্রাসঙ্গিক বিল্ড স্ক্রিপ্টগুলিতে এই মানটি ব্যবহার করতে পারি। (সময়ের সাথে সাথে আমরা এই বিল্ড প্রজেক্টের অনুলিপি তৈরি করি যা আমরা নির্ভরশীল কিছু পণ্যগুলির বিভিন্ন রূপের জন্য তৈরি করি, তাই এখন আমাদের প্যারামিটারের জন্য বিভিন্ন মান সহ 1২ টি ভিন্ন প্রকল্প রয়েছে)। এখন আমি প্রকল্পে সমস্ত প্রাসঙ্গিক বিল্ড কনফিগারেশনগুলি থেকে এজেন্টের প্রয়োজনীয়তা অন্তর্ভুক্ত করতে চাই, তাই কেবল ব্যবহারযোগ্য এজেন্ট বিবেচনা করা হবে। কিন্তু বিল্ড কনফিগারেশন সংখ্যা এবং বৈকল্পিক প্রকল্পগুলির সংখ্যা দেওয়া হয়েছে, আমি প্রস্থান মূল্যের প্রয়োজনীয়তাটি পরামিতি করতে পছন্দ করব env.XXX_VERSION। এটা কি সম্ভব?

(আজ আমাদের সকল এজেন্ট সফ্টওয়্যারের সম্ভাব্য সংস্করণগুলি অন্তর্ভুক্ত করে তবে এটি আর সম্ভব হবে না, তাই এজেন্টগুলির জন্য বিল্ড কনফিগারেশনের প্রকল্পগুলিতে আমাদের প্রয়োজনীয়তাগুলি প্রয়োজন হবে)


হাই Tonny, আপনি কি কখনও প্রয়োজনীয়তা parametrize একটি উপায় খুঁজে পেতে সক্ষম হয়েছে? আমি নিজেকে খুঁজে পাচ্ছি ঠিক আপনার বর্ণিত পরিস্থিতিতে এবং এটি সত্যিই সম্ভব যে জানতে চাই।
Leonid Usov

লিওনিড (দেরী প্রতিক্রিয়ার জন্য দুঃখিত), কিন্তু না, 2018.1 এর নতুন কোটলিন DSL ব্যবহার করার ব্যপারে আমরা এটি করার উপায় খুঁজে পাইনি। এখন আমরা প্রকৃতপক্ষে পাইথন কোড থেকে সমস্ত কনফিগারেশন জেনারেট করি এবং তারপরে সংস্করণ সেটিংস সমর্থনের মাধ্যমে "ইনস্টল করুন" ...
Tonny Madsen

চমৎকার, রেফারেন্সের জন্য ধন্যবাদ, আমি আগে এই বিকল্পটি শুনিনি। তদন্ত শুরু। ইতিমধ্যে, আপনি কি সংক্ষিপ্তভাবে বর্ণনা করতে পারেন যে সংস্করণ সেটিংসের ব্যবহারটি এই ধরনের গতিশীল এজেন্ট নির্বাচনের জন্য কীভাবে অনুমতি দেয়? আপনি কি কোনোভাবে একটি হার্ড কোডেড কনফিগারেশন বিভাগ হিসাবে এজেন্ট প্রয়োজনীয়তা যোগ করা হয়, স্বয়ংক্রিয়ভাবে প্রতিটি বিল্ড জন্য পুনর্জন্ম?
Leonid Usov

(দেরী, কিন্তু ...) যে ঠিক কিভাবে। আমরা কনফিগারেশন জেনারেট করার সময় আমরা কেবলমাত্র সমস্ত ভেরিয়েবল সমাধান করতে পারি। কারণ, এর অর্থ হল আমরা ম্যানিপুলেশনগুলির বিভিন্ন ধরণের কাজ করতে পারি, তাই বিকল্পগুলি "রৈখিক" হতে হবে না।
Tonny Madsen

(দেরী, কিন্তু ...) এর অর্থ হল আমরা ম্যানিপুলেশনের সব ধরণের কাজ করতে পারি, তাই বিকল্পগুলি "রৈখিক" হতে হবে না। আমরা প্রজন্মকে সেট আপ করেছি, সমস্ত প্রয়োজনীয় ফাইলগুলির উপর নির্ভরশীলতার সাথে বিল্ড কনফিগারেশন হিসাবে, তাই কনফিগারেশন পরিবর্তন করবে এমন কিছু যা স্বয়ংক্রিয়ভাবে প্রজন্মকে চালাবে। সংস্করণ সেটিংস সহজ: TeamCity এর কনফিগারেশন স্বয়ংক্রিয়ভাবে VCS (উদাঃ Git) এ সংরক্ষণ করা হয়। এটি একটি দ্বি-উপায় জিনিস: ভিCSগুলিতে পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সনাক্ত হবে এবং TeamCity তার কনফিগারেশনটি সারিবদ্ধ করবে। সুতরাং আমাদের জেনারেটর "সহজ" VCS মধ্যে চেয়েছিলেন conf confes ...
Tonny Madsen

উত্তর:


2

মনে হচ্ছে আপনি কী করতে চান তা ইতিমধ্যেই জানেন এবং সমস্যাটি এজেন্ট এবং কনফিগারেশনের বৃহত সংখ্যক নম্বর যা আপনাকে মোকাবেলা করতে হবে।

কেন TeamCity এর REST API ব্যবহার করে স্বয়ংক্রিয়ভাবে এটি করবেন না? TeamCity এর সার্ভারটি এমন একটি HTTP API এ নির্মিত হয়েছে যা আপনি ওয়েব ইন্টারফেসটি ব্যবহার করতে সক্ষম এমন কোনও ক্ষেত্র সম্পাদনা / আপডেট (প্রায়) করতে ব্যবহার করতে পারেন।

আপনি HTTP GET / PUT কলগুলি মান পেতে এবং আপডেট করার জন্য আপনার পছন্দসই স্ক্রিপ্টিং ভাষা ব্যবহার করে API এর সাথে ইন্টারঅ্যাক্ট করতে পারেন। এই ক্ষেত্রে, আমি মনে করি আপনি যে সমস্ত বিল্ড কনফিগারেশনগুলি উল্লেখ করেছেন সেগুলি আপডেট করার জন্য UI টির মাধ্যমে যেতে এড়াতে স্ক্রিপ্ট লেখার সময় আপনার মূল্যের হবে।

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

  1. TeamCity প্রকল্প উপর overterate

প্রকল্পের তালিকা পান

curl -i -H "Accept: application/json" http://teamcity/httpAuth/app/rest/projects --user username:password
  1. পাওয়া XXX_VERSION প্রকল্প থেকে পরামিতি।

সমস্ত প্রকল্পের উপর লুপ, সমস্ত পরামিতি পান এবং আমাদের XXX_VERSION বিশ্লেষণ করুন

curl http://teamcity/app/rest/projects/id:PROJECT_NAME/parameters
  1. নির্মাণ কনফিগারেশন এ এজেন্ট প্রয়োজন সেট করুন।

প্রতিটি নির্মাণ কনফিগারেশনের জন্য, প্রতিটি প্রজেক্টে, বিশিষ্ট XX_VERSION মানটি ব্যবহার করে বিল্ড কনফিগারেশনের এজেন্ট প্রয়োজনীয়তাগুলি সেট করুন

curl -X PUT http://teamcity/httpAuth/app/rest/buildTypes/<buildTypeLocator>/agent-requirements/<id> --user username:password

এটি সাধারণ ধারণা কিন্তু সম্পূর্ণ নয়, এই স্ক্রিপ্টটিকে টিমসিটি UI এর মাধ্যমে পরিচালনার জন্য আপনি অনেক সময় বাঁচাতে সময় কাটিয়ে সময় ব্যয় করে।

https://confluence.jetbrains.com/display/TCD9/REST+API


আমি কিভাবে কাজ করবে দেখতে পারেন না। আরও ব্যাখ্যা করুন.
Tonny Madsen

Tonny, আমি কিছু অতিরিক্ত বিবরণ দিয়ে আপডেট। সম্পূর্ণরূপে সম্পূর্ণ না হওয়ার জন্য আপনাকে আমার কাছে ক্ষমা করতে হবে। এটা সাহায্য করে বা কমপক্ষে সঠিক পথ বরাবর আপনি পায় আশা করি।
kdtong

0

আপনি জোর করতে পারেন TeamCity সমস্ত সংযুক্ত এজেন্ট নিষ্ক্রিয় না করে একটি নির্দিষ্ট এজেন্ট উপর নির্মিত।

এখানে কিভাবে:

যাও কনফিগারেশন সেটিংস তৈরি করুন

পরবর্তী এজেন্ট প্রয়োজনীয়তা

এখন আপনি একটি সেট আছে স্পষ্ট প্রয়োজন একটি নির্দিষ্ট এজেন্টের জন্য:

প্যারামিটার নাম: system.agent.name

শর্ত: সমান

মান: YOUR_SPECIFIC_AGENT_NAME

এছাড়াও আপনি এই চেষ্টা করতে পারেন:

মাধ্যমে ব্রাউজ করুন: TeamCity - & gt; প্রশাসন - & gt; এজেন্ট - & gt; একটি এজেন্ট নির্বাচন করুন - & gt; তারপর, সামঞ্জস্যপূর্ণ কনফিগারেশন ট্যাব বর্তমান রান কনফিগারেশন নীতি তারপর চালানো কনফিগারেশন শুধুমাত্র চালানো এবং ক্লিক করুন + কনফিগারেশন বরাদ্দ করুন এবং শেষ.

এই সাহায্য করে তাহলে আমাকে জানাতে দয়া করে।

ধন্যবাদ.


কিন্তু দুর্ভাগ্যবশত এই কিছু মাইক্রো-ম্যানেজমেন্ট প্রয়োজন হবে, আমরা এড়াতে চাই। আমাদের 10 টি এজেন্ট রয়েছে যেখানে 8-9 একটি নির্দিষ্ট প্রকল্পের নির্মাণ কনফিগারেশনগুলির জন্য ব্যবহারযোগ্য হতে পারে। তাই আমাদের ২3 টি প্রকল্প কনফিগারেশনের বার 1২ টি প্রোজেক্টের মধ্য দিয়ে যেতে হবে এবং প্রতিটি এজেন্টের নাম সেট করতে হবে। তাই ভাল না। এবং এমনকি খারাপ, আমরা আরো এজেন্ট পাবেন এবং ক্রমাগত সব এজেন্ট কনফিগারেশন পরিবর্তন।
Tonny Madsen

-1

আমি মান পরামিতি করার একটি উপায় খুঁজে পাচ্ছি না %...% প্রতিস্থাপন, কিন্তু আমি একটি workaround খুঁজে পাওয়া যায় নি। এটি আদর্শ নয়, তবে এটি আমার ছোট ব্যবহার ক্ষেত্রে কাজ করে।

ব্যবহারের ক্ষেত্রে: আমি একটি টেমপ্লেট থেকে বিল্ড কনফিগারেশন তৈরি করছি এবং শুধুমাত্র একটি একক, নির্দিষ্ট মেশিনে চালানোর জন্য প্রতিটি বিল্ড কনফিগারেশন প্রয়োজন। আমি করতে চেয়েছিলেন teamcity.agent.name equals %buildAgentName% আমি টেমপ্লেট থেকে বিল্ড কনফিগারেশন তৈরি যখন টেমপ্লেট মধ্যে TeamCity আমাকে পরামিতি পূরণ করার অনুরোধ জানানো।

সমাধান: একটি প্যারামিটার ব্যবহার করার পরিবর্তে আমি কেবল এমন একটি স্ট্রিং স্থাপন করেছি যা কোনও এজেন্ট নামগুলির সাথে মেলে না, যেমন। teamcity.agent.name equals replaceThisWithActualAgentName টেমপ্লেটে। আমি প্যারামিটারের জন্য প্রম্পট নই তবে এটি এজেন্টের প্রয়োজনীয়তা ওভাররাইড না হওয়া পর্যন্ত ভুল মেশিনে দুর্ঘটনাক্রমে চলমান কনফিগারেশনকে বাধা দেয়।

এটি আপনার ব্যবহারের ক্ষেত্রে সমাধান করলে আমি নিশ্চিত নই তবে এটি অন্য কারো জন্য সহায়ক হলে এখানে পোস্ট করছি।

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