ডগফুডিংয়ের সময় কখন কোনও সরঞ্জামের পরবর্তী সংশোধনটি ব্যবহার করা শুরু করা উপযুক্ত?


9

বিশেষত, আমি এমন একটি ডিভাইসে কাজ করছি যা একটি ডিভিসিএস এবং বিল্ড সিস্টেমকে সংহত করে, তবে আমি যে চ্যালেঞ্জের মুখোমুখি হচ্ছি তাদের "মেটা" সরঞ্জাম (সংকলক, ভিসিএস, বিল্ড সিস্টেম, পরীক্ষা রানার, ইত্যাদি) বিকাশের জন্য যে সকলের মুখোমুখি হতে হবে তা আমি চিত্রিত করি they "ডগফুডিং" এর মাধ্যমে বিকাশ করতে চান ।

আমার প্রশ্ন হ'ল: ব্রাঞ্চিং ওয়ার্কফ্লো ব্যবহার করে একটি স্ক্রম-স্টাইল রিলিজ প্রক্রিয়াতে , আমি কোন মুহুর্তে সরঞ্জামটির বিকাশের চক্রটিতে সরঞ্জামটির একটি নতুন সংস্করণ ব্যবহার শুরু করব?

আমি এর মধ্যে ভারসাম্য তৈরি করার জন্য একটি প্রক্রিয়া খুঁজছি:

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

  • অবিচ্ছিন্নভাবে masterডিভাইসের সংস্করণটি ব্যবহার করুন : ডগফুডিংয়ের মাধ্যমে আমি উদ্ঘাটন করা যে কোনও সমস্যা হ'ল ইতোমধ্যে প্রকাশিত ইস্যু।


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

@ গ্লেনএইচ 7 ধন্যবাদ! আমি এখানে একটি শুরু করেছি: meta.programmers.stackexchange.com/questions/6074/…
জেস ব্রাউনিং

উত্তর:


5

প্রথম কাজটি হ'ল খুব পুঙ্খানুপুঙ্খভাবে অটোমেটেড অফলাইন রিগ্রেশন পরীক্ষা করা হয়। আপনি আনুষ্ঠানিকভাবে যা ব্যবহার করেন তার জন্য ন্যূনতম প্রয়োজনীয়তার জন্য এই পরীক্ষাগুলি পাস করা করুন।

দ্বিতীয়ত, আপনার স্বয়ংক্রিয় পরীক্ষাগুলি ধরতে না পারে এমন সমস্যার জন্য আপনার আগের ভার্চিং সংস্করণে ফিরে যাওয়ার জন্য একটি মৃত সহজ উপায় দরকার।

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

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


1
আমি একটি পৃথক শাখা (সম্ভবত dogfood) যা "কোথাও কোথাও developএবং master" এর মধ্যে থাকার ধারণাটি পছন্দ করি । সম্ভবত releaseশাখাগুলি শাখা থেকে আসতে হবে dogfood
জেস ব্রাউনিং 21

3

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

যদি সেই স্তরের আত্মবিশ্বাসের জন্য মাস্টার সংস্করণটির জন্য অপেক্ষা করতে হয়, তবে তা হ'ল।


এটি ইন্টিগ্রেশন পরীক্ষার জন্য ব্যবহার করে "জাল" (অ-উত্পাদন) প্রকল্প তৈরি করে?
জেস ব্রাউনিং

যদি এর মাধ্যমে আপনি অন্তর্বর্তী অভ্যন্তরীণ প্রকাশগুলি বোঝাতে চান তবে হ্যাঁ।
রবার্ট হার্ভে

1

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

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

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

সুতরাং যে ধরনের উত্তর। আপনি বিকাশ পরিবেশে আপনার সর্বাধিক বিকাশমান সংস্করণ ডগফুড করেছেন তবে বিল্ডিং রিলিজের জন্য পূর্ববর্তী রিলিজ ব্যবহার করুন।


না puকিছু জন্য দাঁড়ানো?
জেস ব্রাউনিং

@ জেসব্রাউনিং: আমি বিশ্বাস করি এটি "প্রস্তাবিত আপডেট" হিসাবে দাঁড়িয়েছে। যদিও আমার কোনও রেফারেন্স নেই।
জানু হুডেক

1

গৃহীত উত্তরের উপর ভিত্তি করে , আমি নীচের মতো শাখাগুলি বজায় রাখতে শাখা প্রশাখার কার্যপ্রবাহে প্রসারিত করতে যাচ্ছি :

  • master: release-*বন্ধ হওয়ার সাথে মিশে যায়
  • dogfood: থেকে শাখা master; ডগফুডিংয়ের সময় চিহ্নিত সংশোধনগুলি অন্তর্ভুক্ত করে; developঅভ্যন্তরীণ ব্যবহারের জন্য যখন সফ্টওয়্যারটিকে "স্থিতিশীল" বলে মনে করা হয় তখন থেকে মিশে যায় ; প্রয়োজনে এই শাখার প্রধানকে সময়মতো ফিরিয়ে আনা যেতে পারে
  • develop: থেকে শাখা master; চলমান পরিবর্তনগুলি, বাগফিক্সগুলি dogfoodএবং feature-*শাখা থেকে মার্জ করে
  • feature-*: থেকে শাখা develop; একটি নির্দিষ্ট নতুন বৈশিষ্ট্য পরিবর্তন অন্তর্ভুক্ত
  • release-*: dogfoodযখন সফ্টওয়্যারটি বাহ্যিক ব্যবহারের জন্য "স্থিতিশীল" হিসাবে বিবেচিত হয় তখন থেকে শাখাগুলি ; এর সাথে মার্জ হওয়ার আগে ডকুমেন্টেশন আপডেট এবং ছোটখাটো বাগফিক্স অন্তর্ভুক্তmaster
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.