একই জেনকিন্স ওয়ার্কস্পেসে একাধিক গিট রিপোস চেকআউট করুন


127

জেনকিন্স 1.501 এবং জেনকিনস গিট প্লাগইন 1.1.26 ব্যবহার করছে

আমার একাধিক প্রকল্পের সাথে প্রত্যেকে 3 টি গিট রেপো রয়েছে।

এখন আমাকে জিনকিন্স ক্রীতদাসের একই কর্মক্ষেত্রে 3 গিট রেপো থেকে সমস্ত প্রকল্পের চেকআউট করতে হবে। আমি প্রতিটি গিট রেপো এতে সংজ্ঞায়িত করেছি: উত্স কোড পরিচালনা: একাধিক এসসিএম । তবে প্রতিবার কোনও রেপো পূর্ববর্তী রেপো (এবং এর সম্পর্কিত প্রকল্পগুলি) মুছে ফেলা হয়।

আমি এটি পড়েছি:

http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html

তবে এটি আসলে সাহায্য করে না। আমি সমস্ত রেপোর জন্য স্থানীয় সাবডিরেক্টরির অধীনে একই ফোল্ডারটি নির্দিষ্ট করার চেষ্টা করেছি ( এটি alচ্ছিক ) তবে এটি একই ফলাফল দেয়।

যদি জেনকিন্স ব্যবহার করা যদি সহজভাবে অসম্ভব হয় তবে আমি অনুমান করি যে প্রকল্পগুলি সঠিক জায়গায় সরাতে প্রাক-বিল্ড স্টেপ / স্ক্রিপ্টিং ব্যবহার করা যেতে পারে। প্রকল্পগুলির বিল্ড কনফিগারেশনটি পরিবর্তন করার বিকল্প নয়।

উত্তর:


69

জেনকিনস + গিট প্লাগইন দিয়ে একক ওয়ার্ক স্পেসে একবারে একাধিক রেপো পরীক্ষা করা সম্ভব নয়।

কার্যকারণ হিসাবে, আপনি হয় একাধিক উজানের কাজ করতে পারেন যা প্রতিটি একক রেপো চেকআউট করে এবং তারপরে আপনার চূড়ান্ত প্রকল্পের কর্মক্ষেত্রে অনুলিপি করে (বেশ কয়েকটি স্তরের ক্ষেত্রে সমস্যাযুক্ত), বা আপনি একটি শেল স্ক্রিপ্টিং পদক্ষেপ সেটআপ করতে পারেন যা প্রতিটি প্রয়োজনীয় রেপো পরীক্ষা করে দেখে নির্মাণের সময় কাজের কর্মক্ষেত্র।

পূর্বে একাধিক এসসিএম প্লাগইন এই সমস্যাটি নিয়ে সহায়তা করতে পারে তবে এটি এখন অবচয় করা হয়েছে। একাধিক এসসিএম প্লাগইন পৃষ্ঠা থেকে: "ব্যবহারকারীদের https://wiki.jenkins-ci.org/display/JENKINS/Pipline+ প্লাগিনে স্থানান্তরিত করা উচিত P পাইপলাইন একাধিক এসসিএম চেক করার আরও ভাল উপায় সরবরাহ করে, এবং জেনকিন্স দ্বারা সমর্থিত মূল উন্নয়ন দল। "


প্রথম পদ্ধতির সমস্যা কেন? চাকরী বিভক্ত করা ভাল অনুশীলনের মতো বলে মনে হচ্ছে।
কার্টেনডগ

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

1
আপনার এটি সঠিক উত্তর থেকে পরিবর্তন করা দরকার কারণ এটি আর প্রাসঙ্গিক নয়।
Dvir669

2
পাইপলাইনগুলির জন্য আপনাকে একটি নতুন ডিএসএল শিখতে হবে, যা খুব সাধারণ কাজের জন্য কিছুটা বেশি (একাধিক ভাণ্ডার থেকে কোড দেখুন) আমরা এটি করতে চাই। জেনকিনস পাইপলাইন ডিএসএল-এর আশেপাশে কোনও শালীন জিইউআই উপস্থিত না হওয়া পর্যন্ত একাধিক এসসিএম প্লাগইনটি ধরে থাকুন। আমি জানাতে পারি যে এটি জেনকিনস ২.১17 এর সাথে ভাল কাজ করছে
বুড়াক আরসলান

2
আমি কেবল একাধিক ভঙ্গীতে একই সমস্যাগুলিতে ছুটে এসেছি। আমি এখনই পাইপলাইন প্লাগইনটি ব্যবহার করছি যদিও আমি নতুন ডিএসএল সম্পর্কে @ বুড়াকআরস্লানের মতোই সন্দেহবাদী ছিলাম। এটি আসলে আমি যতটা ভেবেছিলাম তেমন খারাপ নয় এবং যুক্তিযুক্ত শালীন স্নিপেট জেনারেটর নিয়ে আসে। এটি কেবল 2 ঘন্টা ব্যবহারের পরে আমি এখন এই পদ্ধতির পছন্দ করি কারণ শেষ পর্যন্ত আমি পাইপলাইন বিল্ড স্ক্রিপ্টগুলি বাকী কোডের সাথে একসাথে গিট করতে বাধ্য করতে পারি।
বেন

81

একাধিক এসসিএম প্লাগইন সহ:

  • আপনার চেকআউট করতে হবে এমন প্রতিটি ভান্ডারটির জন্য একটি আলাদা সংগ্রহস্থল এন্ট্রি তৈরি করুন (মূল প্রকল্প বা নির্ভরতা প্রকল্প)।

  • প্রতিটি প্রকল্পের জন্য, "অ্যাডভান্সড" মেনুতে (দ্বিতীয় "অ্যাডভান্সড" মেনুতে, প্রতিটি ভাণ্ডারের জন্য "অ্যাডভান্সড" লেবেলযুক্ত দুটি বোতাম রয়েছে), "স্থানীয় সাব-ডিরেক্টরি ডিরেক্টরি রেপো (alচ্ছিক)" পাঠ্যক্ষেত্রটি সন্ধান করুন। আপনি সেখানে "ওয়ার্কস্পেস" ডিরেক্টরিতে সাব-ডিরেক্টরিটি নির্দিষ্ট করতে পারেন যেখানে আপনি প্রকল্পটি অনুলিপি করতে চান। আপনি আমার বিকাশের কম্পিউটারের ফাইল সিস্টেমটি মানচিত্র করতে পারেন।

"দ্বিতীয় উন্নত মেনু" আর বিদ্যমান নেই, পরিবর্তে যা করা দরকার তা হ'ল "যুক্ত করুন" বোতামটি ("অতিরিক্ত আচরণ" বিভাগে) ব্যবহার করুন এবং "একটি উপ ডিরেক্টরিতে চেক আউট" নির্বাচন করুন choose

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

আশা করি এইটি কাজ করবে.


3
এটি অবশ্যই পুরানো হতে হবে। একাধিক এসসিএম প্লাগইন লেখার সময় জিআইটি স্নিপেটে alচ্ছিক উপ-পাথ থাকে না।
অ্যালেক্সিওস্ট

12
প্রতিটি সংগ্রহস্থলে "অ্যাড" নামে একটি ড্রপ ডাউন তালিকা রয়েছে। এটিতে আপনি "একটি উপ-ডিরেক্টরিতে চেকআউট" বিকল্পটি সন্ধান করতে পারেন যা একই কাজ করে।
গ্যারি ইয়ে

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

একাধিক এসসিএম প্লাগইনের সবচেয়ে বড় সমস্যাটি হ'ল: "পোস্ট-কমিট টাইপ ট্রিগারগুলি বর্তমানে কাজ করে না (কমপক্ষে সাবভার্সনের জন্য), সুতরাং 'ক্রোন' টাইপ পোলিং কনফিগার করা প্রয়োজন" "
ধুসরাই

1
পাইপলাইনগুলির জন্য আপনাকে একটি নতুন ডিএসএল শিখতে হবে, যা খুব সাধারণ কাজের জন্য কিছুটা বেশি (একাধিক ভাণ্ডার থেকে কোড দেখুন) আমরা এটি করতে চাই। জেনকিনস পাইপলাইন ডিএসএল-এর আশেপাশে কোনও শালীন জিইউআই উপস্থিত না হওয়া পর্যন্ত একাধিক এসসিএম প্লাগইনটি ধরে থাকুন। আমি জানাতে পারি যে এটি জেনকিনস ২.১17 এর সাথে দুর্দান্ত কাজ করছে
বুড়াক আরসলান

41

যেহেতু একাধিক এসসিএম প্লাগইন হ্রাস করা হয়েছে।

জেনকিনস পাইপলাইনের সাথে একাধিক গিট রেপো চেকআউট করা এবং গ্রেডেল ব্যবহার করে এটি তৈরি করার পরে এটি সম্ভব

node {   
def gradleHome

stage('Prepare/Checkout') { // for display purposes
    git branch: 'develop', url: 'https://github.com/WtfJoke/Any.git'

    dir('a-child-repo') {
       git branch: 'develop', url: 'https://github.com/WtfJoke/AnyChild.git'
    }

    env.JAVA_HOME="${tool 'JDK8'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // set java home in jdk environment
    gradleHome = tool '3.4.1' 
}

stage('Build') {
  // Run the gradle build
  if (isUnix()) {
     sh "'${gradleHome}/bin/gradle' clean build"
  } else {
     bat(/"${gradleHome}\bin\gradle" clean build/)
  }
}
}

আপনি এই জাতীয় কাস্টম পাইপলাইনের পরিবর্তে গিট সাবমডিউলগুলি ব্যবহার করার বিষয়টি বিবেচনা করতে চাইতে পারেন ।


ধন্যবাদ!!! dirব্লক চাবিকাঠি, আমি জিনিসটা করতে পারে কেন আমি শুধুমাত্র আমার কাজ কর্মক্ষেত্র সর্বাধিক সাম্প্রতিক-ক্লোন রেপো দেখছি।
Bonh

একাধিক এসসিএম এর অধীনে "পরিবর্তনগুলি" কীভাবে ধারণা করা হয়? কাজটি তৈরি করে এমন সমস্ত ভান্ডার থেকে দেখা পরিবর্তনগুলির যোগফল কি? যদি সম্ভব হয় তবে প্রত্যেকের কাছ থেকে তাদের আইটেমাইজ করা ভাল, 23 changes from repo XXX, 3 changes from repo YYYবা সেই লাইনগুলিতে আরও কিছু কমপ্যাক্ট।
jxramos

20

আমি জিনকিন্সের সাথে গিট প্লাগইন সফলভাবে একযোগে একাধিক এসসিএম প্লাগইন ব্যবহার করেছি ।


3
ধন্যবাদ যে দুর্দান্ত, আমি সংগ্রহস্থল বিভাগে 2 বিটবুকিট পাথ রাখতে সক্ষম, এবং এখন আমি কীভাবে রেপো 1 চেকআউটটি "বিকাশ" শাখা এবং রেপো 2 চেকআউট "ফিক্সস" শাখাকে বলতে পারি? আমি জেনকিনগুলিতে অংশ তৈরি করার জন্য শাখাগুলি দেখতে পাচ্ছি, আমি কীভাবে শাখা নির্দিষ্টকরণকারীর ('কোনও' এর জন্য ফাঁকা) রিপোজিটরির নাম এবং রেফসেক স্থাপন করতে পারি, যাতে প্রত্যেকে আমার সংশ্লিষ্ট শাখাটি যাচাই করতে পারে? বা আমি এটি কর্ণপাত করছি এবং আমার "মাল্টিপল এসসিএম" বলার মতো বুলিয়ানটি ক্লিক করা উচিত?
pelos

@ পেলোস আপনি কি সমাধানটি সন্ধান করতে পেরেছিলেন?
গোবিন্দ

এই মুহুর্তে আমরা yML ফাইলটি ব্যবহার করছি না এবং আমরা নিয়মিত কাজগুলি সহ দুটি পৃথক ওয়ার্কফ্লো করেছি
পেলোস

5

ভান্ডারগুলির সম্পর্কের উপর নির্ভর করে, অন্য পদ্ধতির মধ্যে হ'ল অন্যান্য সংগ্রহস্থল (সংগ্রহস্থল) একটি সংগ্রহস্থলের একটি গিট সাবমডিউল হিসাবে যুক্ত করা । একটি গিট সাবমডিউল অন্যান্য ভান্ডারগুলির জন্য একটি রেফারেন্স তৈরি করে। "সুপারপ্রজেক্ট" (অফিশিয়াল টার্ম) --recursiveক্লোনিং করার সময় আপনি পতাকাটি নির্দিষ্ট না করে Those সাবমডিউল রেপগুলি ক্লোন করা হয় না ।

বর্তমান প্রকল্পে একটি সাব মড্যুল যুক্ত করার কমান্ড এখানে দেওয়া হয়েছে:

git submodule add <repository URI path to clone>

আমরা জেনকিন্স v1.645 ব্যবহার করছি এবং গিট এসসিএম বাইরে-সুপার-প্রজেক্টগুলির জন্য একটি পুনরাবৃত্ত ক্লোন করবে। ভয়েলা আপনি একই জেনকিন্স কাজের কর্মক্ষেত্রে তাদের নিজস্ব ডিরেক্টরিতে সুপারপ্রজেক্ট ফাইল এবং সমস্ত নির্ভরশীল (সাবমডিউল) রেপো ফাইলগুলি পান।

এটি সঠিক পদ্ধতির পরিবর্তে এটি একটি দৃষ্টিভঙ্গি নয় ou


5

জেনকিনস: একাধিক এসসিএম - হ্রাস করা। জিআইটি প্লাগইন - একাধিক স্টোরের জন্য কাজ করে না।

কোড হিসাবে স্ক্রিপ্টিং / পাইপলাইন - যাওয়ার উপায়।


2

আমারও এই সমস্যা ছিল আমি অন্যান্য প্রকল্পে ট্রিগার / কল বিল্ড ব্যবহার করে এটি সমাধান করেছি। প্রতিটি সংগ্রহস্থলের জন্য আমি পরামিতিগুলি ব্যবহার করে ডাউন স্ট্রিম প্রকল্পকে কল করি।

মূল প্রকল্প:

This project is parameterized
String Parameters: PREFIX, MARKETNAME, BRANCH, TAG
Use Custom workspace: ${PREFIX}/${MARKETNAME}
Source code management: None

তারপরে প্রতিটি সংগ্রহস্থলের জন্য আমি নীচে প্রবাহের প্রকল্পটি বলি:

Trigger/call builds on other projects: 
Projects to build: Linux-Tag-Checkout
Current Build Parameters
Predefined Parameters: REPOSITORY=<name>

প্রবাহ প্রকল্প: লিনাক্স-ট্যাগ-চেকআউট:

This project is parameterized
String Parameters: PREFIX, MARKETNAME, REPOSITORY, BRANCH, TAG
Use Custom workspace:${PREFIX}/${MARKETNAME}/${REPOSITORY}-${BRANCH}
Source code management: Git
git@<host>:${REPOSITORY}
refspec: +refs/tags/${TAG}:refs/remotes/origin/tags/${TAG}
Branch Specifier: */tags/${TAG} 

1

জেনকিনস + গিট প্লাগইন (সম্ভবত কেবলমাত্র আরও সাম্প্রতিক সংস্করণগুলিতে?) একক ওয়ার্ক স্পেসে একবারে একাধিক রেপো পরীক্ষা করা সম্ভব।

"সোর্স-কোড-ম্যানেজমেন্ট" বিভাগে, "গিট" নির্বাচন না করে "একাধিক এসসিএম" নির্বাচন করুন এবং বেশ কয়েকটি গিট সংগ্রহস্থল যুক্ত করুন।

নিশ্চিত হয়ে নিন যে সমস্তটিতে আপনি "অতিরিক্ত আচরণ" হিসাবে ক্রিয়াটি "একটি উপ ডিরেক্টরিতে চেক আউট করুন" এবং একটি পৃথক সাব-ডিরেক্টরিকে নির্দিষ্ট করে।


আমি বিশ্বাস করি যে আপনি ভ্যানিলা গিট প্লাগিনের পরিবর্তে (অবচয়যুক্ত) একাধিক এসসিএম প্লাগইন ব্যবহার করছেন।
রবার্ট

0

আমরা আমাদের একাধিক জিআইটি সংগ্রহস্থল পরিচালনা করতে গিট-রেপো ব্যবহার করছি । একটি জেনকিনস রেপো প্লাগইন রয়েছে যা গিট-রেপো দ্বারা পরিচালিত সমস্ত সংগ্রহস্থল বা জিনকিন্স জব ওয়ার্কস্পেসের অংশ যাচাই করতে দেয় allows


এই প্রশ্নটিতে জিজ্ঞাসা করা সমস্যাটি আপনি ঠিক কীভাবে সমাধান করবেন? আপনার উল্লিখিত প্লাগইনটি আমি ইনস্টল করেছি এবং রেপো এবং প্লাগইন সম্পর্কে পড়েছি, তবে আমি দেখতে পাচ্ছি না যে জেনকিনস কীভাবে একটি প্রকল্পে
সম্পাদন

রেপো ব্যবহার করার জন্য, বিশেষ সংগ্রহস্থল তৈরি করা দরকার যা কেবল মেনিফেস্ট ফাইল (গুলি) ধারণ করে। এই ফাইলে আপনি অন্যান্য সংগ্রহস্থল সম্পর্কিত সমস্ত তথ্য নির্দিষ্ট করেন। ম্যানিফেস্ট ফাইলগুলির সঠিক ফর্ম্যাটটি গিট-রেপো প্রকল্পের ডক্স / ম্যানিফেস্ট-ফরম্যাট.টিএসটি ফাইল ( জিরিট . googlesource.com/git-repo/+/master/docs/… ) এ বর্ণনা করা হয়েছে। কাজের জেনকিনস রেপো অংশটি কনফিগার করার সময় - আপনি 'ম্যানিফেস্ট' সংগ্রহস্থলের অবস্থান এবং বিকল্প হিসাবে 'ম্যানিফেস্ট' ফাইলগুলির নাম উল্লেখ করেন (আপনার কয়েকটি থাকতে পারে)। ম্যানিফেস্টে উল্লিখিত সমস্ত ভান্ডারগুলি ক্লোন করা হবে।
ভ্লাদিস্ল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.