প্যাকেজ এবং সংস্করণ কৌশলগুলি একাধিক সংগ্রহস্থল পরিবেশে


13

আমরা একাধিক টিমের সাথে একটি ছোট-ইশ ফার্ম যাঁরা তাদের নিজস্ব গিট সংগ্রহস্থল পরিচালনা করেন। এটি একটি ওয়েব প্ল্যাটফর্ম এবং প্রতিটি দলের নিদর্শনগুলি রাতের পরীক্ষার জন্য দিনের শেষে স্থাপন করা হয়। আমরা সংস্করণ এবং প্যাকেজিং কাছাকাছি প্রক্রিয়া আনুষ্ঠানিক করার চেষ্টা করছি।

প্রত্যেক দলের একটি মাস্টার শাখা থাকে যেখানে তারা দিন-দিন বিকাশ করে। প্রতিটি দলের গুণগতমানের সদস্যরা তাদের দলের পরিবর্তিত পরীক্ষাগুলিতে পরীক্ষা করতে চান যেখানে সমস্ত উপাদান শেফের সাথে একত্রিত হয় from নিদর্শনগুলি টার্বলগুলি তবে আমি সেগুলি আরপিএমগুলিতে রূপান্তর করতে চাই যাতে আমরা সংস্করণগুলি সঠিকভাবে চিন্তা করতে পারি এবং যুক্তি করতে পারি।

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

উদাহরণস্বরূপ, এটি সম্পর্কিত রিলিজ শাখাগুলির সাথে একটি সাধারণ গিট সংগ্রহস্থল:

 0-0-0-0-0-0-0-0-0-0 (master)
   |           |
   0           0
 (rel-1)       |
               0
            (rel-2)

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

EDIT1: @ আরবান 48 এর উত্তরের জবাবে

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

আমাদের বৈশিষ্ট্য শাখাগুলি সর্বদা মাস্টার থেকে কাটা হয় এবং মাস্টারের সাথে মার্জ হওয়ার আগে তারা সিআই-সিডি স্থিতিশীলতা পরীক্ষার মধ্য দিয়ে কিছু পরিমাণ বিকাশকারী পরীক্ষার মধ্য দিয়ে যায়।

হটফিক্সগুলি হটফিক্স শাখায় তৈরি করা হয় (রিলিজ শাখা থেকে কাটা) এবং উত্পাদনে ন্যূনতম প্রভাব পরীক্ষার সাথে স্থাপন করা হয়।

রিলিজ এবং হটফিক্স শাখাগুলির জন্য আমাদের সংস্করণ কৌশল সেমভার অনুসরণ করে। মত সংস্করণ মাধ্যমে QA তে চক্র চলতে চলতে সময় শাখা মুক্ত v2.0.0-rc1, v2.0.0-rc2এবং পরিশেষে পর QA তে সাইন-বন্ধ হয়ে v2.0.0

আমরা মাঝে মাঝে ছোট বৈশিষ্ট্যগুলির জন্য বিন্দু প্রকাশ করি যা শাখাগুলি প্রকাশের জন্য মিশ্রিত করা হয় (এবং তারপরে মাস্টার হয়ে যাবে) যেখানে সংস্করণগুলি হয়ে যায় v2.1.0। এবং হটফিক্সগুলি v2.1.1প্যাটার্নটি ধরে নেয় ।

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


বিকাশ শাখা থেকে বিল্ডগুলিতে কেন আর-সি। <বিল্ড_নম্বার> যুক্ত করবেন না এবং একবার মাস্টার / রিলিজ শাখা থেকে মুক্তি পেয়ে কেবল একটি জাইজ ব্যবহার করবেন?
আরবান 48

rcপ্রত্যয়টির আগে কী হবে ? এটি major.minorবিকাশের সংস্করণ নির্দেশ করবে । rcএবং বিল্ড নম্বর কেবল তার ভিত্তিতে প্রাপ্ত হতে পারে। এছাড়াও rcমাস্টার উপর অর্থে দেখা যায় না, কারণ আমরা প্রভু হইতে পৃথক মুক্তি না। রিলিজ চক্রের অংশ হিসাবে রিলিজ শাখাগুলিতে আমরা আজ আমাদের রিলিজ প্রার্থীদের ট্যাগ করি
tsps

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

উত্তর:


3

হুম, ভাল আমার কাছে একটি নেট নেট উদাহরণ রয়েছে যা প্রযুক্তি অজ্ঞায়িত হতে পারে।

আমি কেবল একটি দ্রুত সংক্ষিপ্তসার করব।

  • গিটফ্লো ব্রাঞ্চিং কৌশল সহ উপাদান প্রতি গিট রেপো

  • সমস্ত একটি দল নগর বিল্ড ট্রিগার বিকাশ প্রতিশ্রুতিবদ্ধ

  • টিমসিটি বিল্ড ম্যানুয়াল মেজর নাবালিক + এসেম্বলিআইএনফোস-এর বিল্ড সংখ্যা অর্থাৎ 1.1.hotfix.build সহ সংস্করণটি সংশোধন করে

  • টিমসিটি নুগেট প্রকাশিত লাইব্রেরির জন্য একই সংস্করণ নম্বর ব্যবহার করে নুগেট প্যাকেজিং ট্রিগার করে

  • অক্টোপাস ম্যানুয়াল পরীক্ষার জন্য qa সমাপ্ত বিল্ড স্থাপন করে (সমস্ত পরীক্ষা পাস করে ধরে)

  • যদি সবকিছু ভাল হয় তবে অক্টোপাসের মাধ্যমে ম্যানুয়ালি উত্পাদনে সংস্করণ স্থাপন করুন।

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

মূল বিষয় হ'ল প্রতিটি কেন্দ্রীয় কিছু কেন্দ্রীয় প্রক্রিয়ার মাধ্যমে অনন্যভাবে সংস্করণ করা।

তারপরে আপনি 'ওএমজি, আমি কী সংস্করণ পেয়েছি' এর পরিবর্তে 'হুঁ কি সংস্করণগুলি চাই?' এর পরিস্থিতিতে আপনি রয়েছেন ?? '

সম্পাদনা করুন: মন্তব্য আবার।

কেবল সেই মূল বিষয়টিকে সত্যই আন্ডারলাইন করতে। কোন শাখাটি সম্পূর্ণ সফ্টওয়্যার এবং সংস্করণ সমস্ত এতে স্বীকৃতি দেয় তা গঠন করে। এই শাখা থেকে শুধুমাত্র সংস্করণযুক্ত সফ্টওয়্যার মোতায়েন করুন।

আমার দৃষ্টিভঙ্গি হ'ল আপনাকে আপনার শাখা কৌশলটি সম্বোধন করতে হবে।

  • সংস্করণ বৈশিষ্ট্য (বা কোনও দেব) শাখা করবেন না।
  • সংস্করণ মাস্টার না
  • কেবলমাত্র মাস্টার থেকে প্যাকেজগুলি ব্যবহার করুন

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

এছাড়াও, আমাদের আজ উন্নয়ন শাখায় সংস্করণ রয়েছে। এটি কেবলমাত্র প্রতিটি প্রতিশ্রুতিতে ট্যাগ করতে হয়, কখনও কখনও দুবার এইভাবে সংস্করণে। আমি বিকাশের একটি পরিস্কার ভিউ সরবরাহ করতে চাই যে বর্তমান সংস্করণটি v next+ এর buildsসাথে মিলে যায়git describe
tsps

ভাল আপনি এখনও তৈরি করতে পারেন এবং সংস্করণ মাস্টার প্রতিশ্রুতিবদ্ধ। তারা এমনকি বৈশিষ্ট্য শাখা ব্যবহার না?
ইভান

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

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

1

আমাকে বিকল্প কর্মপ্রবাহের প্রস্তাব দিন, এটি আপনার সংস্করণ সমস্যা সমাধান করতে পারে বা সমাধানের দিকে আরও উপায় সম্পর্কে আপনাকে ভাবতে সহায়তা করে।

প্রথমে কিছুটা দর্শন ..
(আমি আপনার কর্মপ্রবাহ সম্পর্কে কয়েকটি ধারনা করছি, আমি ভুল হলে দয়া করে আমাকে সংশোধন করুন)

  1. পরীক্ষাগুলি প্রতিশোধমূলকভাবে চালানো হয় :

    maserবৈশিষ্ট্যযুক্ত শাখার বাইরে শাখা, তারপরে এটিকে কিউএ দ্বারা পরীক্ষার জন্য একটি নমুনায় পরিণত করুন।
    সমস্যাটি হ'ল : যদি পরীক্ষাগুলি ব্যর্থ হয় তবে masterভেঙে যেতে পারে!

    ক্ষতিকর দিক:

    • এটি বিকাশকারীদের বিশ্বাস না করে master

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

    • যখন রিলিজ শাখায় বাগ স্থির করা হয়, তখন আবার মার্জ হয়ে গেলে masterমার্জ সংঘাত তৈরি হতে পারে। (এবং আমরা বিরোধগুলি পছন্দ করি না)

  2. ছোট কোড মার্জ এবং সংশোধন :

    সংশ্লেষ করা সমস্ত কোড masterযেমন ছোট ফিক্স বা কোনও নির্দিষ্ট বৈশিষ্ট্যের অংশ নয় এমন পরিবর্তনগুলির মত এটি রাখা শক্ত ।

    ক্ষতিকর দিক:

    • বিকাশকারী এখনই বা পরে এই ছোট ফিক্সটি মার্জ করবেন কিনা তা নিশ্চিত নয়।

    • আমি কি এই নতুন ছোট ফিক্স সংস্করণ করা উচিত?

    • যে কোনও সময়ে এটি স্পষ্ট নয় যে masterশাখার অবস্থা কী এবং সেখানে কী কোড ভাসমান

    • কিছু বিল্ট ভেঙেছে, এটি নতুন বৈশিষ্ট্যের অংশ নয়। এবং এটি কোথা থেকে এসেছে তা ট্র্যাক করা সত্যিই শক্ত

গিট কাজের প্রবাহের জন্য আমার ধারণাটি নিম্নরূপ:

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

masterআপনি ইতিমধ্যে যেমন নতুন বৈশিষ্ট্য বিকাশ জন্য শাখা আউট । তবে এখন নতুন তৈরি হওয়া এই শাখাটি ছেড়ে দেওয়ার পরিবর্তে এই বৈশিষ্ট্যটি চেরি-বাছাই করা এবং releaseশাখায় একীভূত করা উচিত ।

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

আপনি কিউএর জন্য সেই বৈশিষ্ট্যগুলি শাখাগুলি থেকে শিল্পকর্মগুলি তৈরি করতে পারেন।
যদি সবকিছু ঠিক থাকে তবে সেই বৈশিষ্ট্যটি আবার ফিরিয়ে দিন masterএবং এই বৈশিষ্ট্যটিকে চেরি-বাছাই করুন / বাগ-ফিক্স / হট-ফিক্সটি মুক্তির শাখায় রাখুন।

সংস্করণ
বৈশিষ্ট্য শাখার সংস্করণটি কিছু নাম কনভেনশন ব্যবহার করতে পারে1.2.3-rc.12345

releaseশাখায় থাকা সংস্করণগুলি কেবল 1.2.3 ( 1.2.3> 1.2.3-rc.12345উদ্বেগের জন্য একটি কম জিনিস) ব্যবহার করবে

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

আমি আশা করি এটি কোনও উপায়ে আপনাকে সহায়তা করবে, আপনি যে কোনও প্রকার কেস নিয়ে আসতে পারেন সে সম্পর্কে আমি আনন্দের সাথে আলোচনা করব।

PS:
আমি আমার ইংরাজির জন্য ক্ষমাপ্রার্থী, এটি আমার মূল ভাষা নয়।


আপনার বিস্তারিত উত্তরের জন্য ধন্যবাদ। মন্তব্য বার যথেষ্ট পাঠ্যের অনুমতি দেয় না বলে আমি ইডিট হিসাবে মূল পোস্টে প্রতিক্রিয়া জানাব।
tsps

0

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

দুটি ধারণা মাথায় আসে:

  1. আপনি "মাস্টার" শাখাকে আমাদের "বিকাশ" শাখায় সাধারণত যা আছে তা হিসাবে গণ্য করেন। এটি বার্তা শাখাকে অনেক দূষিত করে।

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

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