একটানা সংহতকরণে একাধিক শাখা পরিচালনা করা


86

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

এখনও অবধি আমি খুঁজে পেয়েছি যে আমি নিতে পারি এমন দুটি প্রধান পন্থা রয়েছে (বা সম্ভবত কিছু অন্যান্য ???)।

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

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

উত্তর:


70

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

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

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

তারা বিমূর্ততা দ্বারা শাখা বাদে বেশ স্ব স্ব ব্যাখ্যা। এটি কেবল অভিনব একটি শব্দ:

  1. আপনার যে পরিবর্তনটি করা দরকার সেই অংশটির উপর একটি বিমূর্ততা তৈরি করুন।
  2. অ্যাবস্ট্রাকশন স্তরটি ব্যবহার করার জন্য সিস্টেমের বাকী রিফ্যাক্টর।
  3. একটি নতুন বাস্তবায়ন তৈরি করুন, যা সম্পূর্ণ হওয়া পর্যন্ত উত্পাদন কোডের অংশ নয় path
  4. আপনার নতুন বাস্তবায়নের প্রতিনিধিত্ব করতে আপনার বিমূর্ততা স্তর আপডেট করুন।
  5. পুরানো বাস্তবায়ন সরান।
  6. বিমূর্ততা স্তরটি যদি এটি আর উপযুক্ত না হয় সরিয়ে ফেলুন।

অধ্যায়ে 14: শাখা, স্ট্রিম এবং ক্রমাগত একীকরণ বিভাগের নিম্নলিখিত অনুচ্ছেদ : উন্নত সংস্করণ নিয়ন্ত্রণ প্রভাবগুলির সংক্ষিপ্তসার করে।

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

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


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

13
আসল সিআই কেবল একীকরণের জন্য নয়, এটির প্রতিক্রিয়া সম্পর্কেও
অ্যান্টন আরিপভ

4
আমি এটিকে উত্তর হিসাবে বেছে নিয়েছি (কমপক্ষে অনুগ্রহটি দিয়েছি, দয়া করে আমাকে এখনও কোনওভাবে এটি সঠিক হিসাবে চিহ্নিত করতে হবে কিনা তা আমাকে জানান) তবে আমি মনে করি এটি আমার সমস্যার সমাধান নয়। আমি zeroturnaround.com/blog/…
toomasr

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

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

4

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

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

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


আমি মনে করি সরঞ্জামের এই অভাবের অর্থ এই বিভাগে কিছু প্লাগইন / পণ্য রাখার জায়গা রয়েছে। আমার নিজের লিখতে চাইবে না।
toomasr

4
জেনকিন্সের জন্য ইউটিলিটি রয়েছে যা প্রতিটি শাখার জন্য স্বয়ংক্রিয়ভাবে বিল্ড কনফিগারেশন তৈরি করে: entagen.github.com/jenkins-build-per-branch
কোলেন

3

আমি ডেভ + স্থিতিশীল শাখা বেছে নেব। এবং যদি আপনি এখনও কাস্টম শাখাগুলি চান এবং লোড সম্পর্কে ভীত হন, তবে কেন এই কাস্টমগুলিগুলিকে মেঘে স্থানান্তরিত করবেন না এবং বিকাশকারীরা এটিকে নিজেরাই পরিচালনা করতে দিন না, যেমন: http://cloudbees.com/dev.cb এটি এখন কোহসুকের এই সংস্থাটি is । একটি Eclipse Tooling এছাড়াও রয়েছে, সুতরাং আপনি যদি Eclipse এ থাকেন তবে আপনার এটি দৃ en়ভাবে dev env এ সংহত হবে।


আমি কি একাধিক শাখা পরিচালনার সরঞ্জামের অভাবে একই সমস্যার সাথে মেঘের সাথে ব্যবসা করব? মানে আমি এখনই লোড পরিচালনা করতে সক্ষম হব তবে এখনও শাখাগুলি নেই?
toomasr

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

ওহ, বুঝেছি শাখার মালিককে চেরি বলুন যে তিনি আগ্রহী সেই কাজগুলি বেছে নিন এবং সে যেমন চান তার পছন্দমতো শাখার জন্য সেট আপ করুন। আমি এই ধারনাটি পছন্দ করি.
toomasr

1

আসলে যা সমস্যা তা হ'ল বৈশিষ্ট্য শাখার সাথে বিচ্ছিন্নতা তৈরি করা। আমাদের সংস্থায় আমাদের পৃথক মাভেন প্রকল্পগুলির একটি সেট রয়েছে যা সমস্ত বৃহত্তর বিতরণের অংশ হতে পারে। এই প্রকল্পগুলি বিভিন্ন দল দ্বারা পরিচালিত হয় তবে প্রতিটি বিতরণের জন্য সমস্ত প্রকল্প প্রকাশ করা দরকার। ফিচারব্র্যাঞ্চ এখন এক প্রকল্প থেকে অন্য প্রকল্পে ওভারল্যাপ হতে পারে এবং বিল্ডিং বিচ্ছিন্নতা ব্যথা সহকারে হয়ে ওঠে ts আমরা চেষ্টা করেছি এমন বেশ কয়েকটি সমাধান রয়েছে:

  • প্রতিটি বৈশিষ্ট্য শাখার জন্য নেক্সাসে পৃথক স্ন্যাপশট সংগ্রহস্থল তৈরি করুন
  • উত্সর্গীকৃত দাসদের স্থানীয় সংগ্রহস্থলগুলি ভাগ করুন
  • আপস্ট্রিম রিপোজিটরিগুলির সাহায্যে সংগ্রহস্থল-সার্ভার-প্লাগইন ব্যবহার করুন
  • একটি বেসরকারী সংগ্রহস্থলের সাহায্যে একটি কাজের মধ্যে সমস্ত তৈরি করুন

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

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

আমার 2 সেন্ট

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