আমরা একাধিক টিমের সাথে একটি ছোট-ইশ ফার্ম যাঁরা তাদের নিজস্ব গিট সংগ্রহস্থল পরিচালনা করেন। এটি একটি ওয়েব প্ল্যাটফর্ম এবং প্রতিটি দলের নিদর্শনগুলি রাতের পরীক্ষার জন্য দিনের শেষে স্থাপন করা হয়। আমরা সংস্করণ এবং প্যাকেজিং কাছাকাছি প্রক্রিয়া আনুষ্ঠানিক করার চেষ্টা করছি।
প্রত্যেক দলের একটি মাস্টার শাখা থাকে যেখানে তারা দিন-দিন বিকাশ করে। প্রতিটি দলের গুণগতমানের সদস্যরা তাদের দলের পরিবর্তিত পরীক্ষাগুলিতে পরীক্ষা করতে চান যেখানে সমস্ত উপাদান শেফের সাথে একত্রিত হয় 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
প্যাটার্নটি ধরে নেয় ।
তবে প্রশ্নটি এই শাখাগুলির সংস্করণকরণের বিষয়ে নয়। আমি এই সংস্করণ স্কিমটি পুরোপুরি পরিবর্তন না করতে পছন্দ করব। উন্নয়ন শাখা অর্থাত্ একমাত্র পরিবর্তন আসে। মাস্টার। আমি সিআই-সিডি পরিবেশে নির্ভরযোগ্যতার সাথে কীভাবে নির্দেশ করতে পারি যার কোন সংস্করণ বিদ্যমান উত্পাদনটি পূর্ববর্তী প্রকাশকে কব্জি করে। এটি আদর্শভাবে স্মার্ট গিট ট্যাগিংয়ের মাধ্যমে করা হবে তবে এমন কিছু যা মাস্টার শাখাকে অত্যধিকভাবে ট্যাগ করে না সেটিকে পছন্দ করা হয়।
rc
প্রত্যয়টির আগে কী হবে ? এটি major.minor
বিকাশের সংস্করণ নির্দেশ করবে । rc
এবং বিল্ড নম্বর কেবল তার ভিত্তিতে প্রাপ্ত হতে পারে। এছাড়াও rc
মাস্টার উপর অর্থে দেখা যায় না, কারণ আমরা প্রভু হইতে পৃথক মুক্তি না। রিলিজ চক্রের অংশ হিসাবে রিলিজ শাখাগুলিতে আমরা আজ আমাদের রিলিজ প্রার্থীদের ট্যাগ করি
rc
প্রত্যয় হবে।