কীভাবে আমরা সিআই-চালিত উন্নয়ন এড়াতে পারি…?


45

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

প্রকল্পটি একটি "মূল" কাঠামোর সমন্বয়ে তৈরি করা হয়েছে, প্রায় অর্ধ-মিলিয়ন-বা লাইন কোডের লাইন, একগুচ্ছ "প্লাগইনস" যা কনসোর্টিয়াম দ্বারা রক্ষণাবেক্ষণ করা হয়, এবং বেশ কয়েকটি বহিরাগত প্লাগইন, যার বেশিরভাগ আমরা আছি না ' টি এমনকি সচেতন।

বর্তমানে, আমাদের সিআই মূল এবং রক্ষণাবেক্ষণ প্লাগইনগুলি তৈরি করে।

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

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

এই প্লাগইনটির তৃতীয় পক্ষের লাইব্রেরিতে যেমন নির্ভরযোগ্যতা থাকতে পারে যেমন উদাহরণস্বরূপ CUDA , এবং ব্যবহারকারী চান না, কীভাবে জানেন না বা কেবল হার্ডওয়ার কারণে সেই ভাঙা প্লাগইনটি সংকলন করতে পারে না।

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

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


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


1
@ কেভিনক্রামউইদে: আমি নিশ্চিত তারা এগুলি ইতিমধ্যে জানে ;-) যদি আপনি অসঙ্গতিগুলি অনুভব করেন তবে আমি নিশ্চিত যে তারা এপিআই ইচ্ছাকৃতভাবে পরিবর্তন করেছে।
ডক ব্রাউন

3
আমি প্রশ্নটি পুনরায় লিখব, কারণ এটি সত্যই বিভ্রান্তিকর। এর মতো কিছু যখন আমার বর্তমান সিআই ভাঙ্গেন আমি কীভাবে পিআরগুলি পরিচালনা করতে পারি? আমি মনে করি আপনার পরিস্থিতি আরও ভাল করে ধরুন।
bracco23

2
আপনার বিল্ড / পরীক্ষার প্রক্রিয়াটি কতটা জটিল / জটিল? এটি কেবল একটি একক কমান্ড চালানো বা একটি একক বোতামে ক্লিক করার বিষয় হওয়া উচিত। এই মুহুর্তে, জনগণ পিআর জমা দেওয়ার আগে নিজের জন্য সমস্ত পরীক্ষা চালানোর আশা করা যুক্তিসঙ্গত হয়ে ওঠে।
আলেকজান্ডার

উত্তর:


68

সিআই চালিত উন্নয়ন ঠিক আছে! এটি পরীক্ষা না চালানো এবং ভাঙ্গা কোড সহ আরও অনেক ভাল! তবে জড়িত প্রত্যেকের পক্ষে এটি আরও সহজ করার জন্য কয়েকটি জিনিস রয়েছে:

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

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

  • নিজের জন্য কীভাবে সিআই ব্যবহার করবেন তা ব্যাখ্যা করুন: হতাশার অংশটি হ'ল এই প্রতিক্রিয়াটি কেবলমাত্র জন জমা দেওয়ার পরে আসে। যদি অবদানকারীরা তাদের নিজস্ব সংগ্রহস্থলের জন্য সিআই সেট আপ করেন তবে তারা পূর্বের প্রতিক্রিয়া পাবেন - এবং অন্যান্য লোকের জন্য কম সিআই বিজ্ঞপ্তি তৈরি করবেন।

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

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

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


13
"এই পরিত্যক্ত উন্মুক্ত পিআরগুলি কেবল সবকিছু
ছড়িয়ে দেয়

34

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

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


20
সিআই-এর স্বয়ংক্রিয় পরীক্ষা করা উচিত। আপনি যদি নিশ্চিত করতে চান যে প্লাগইনগুলির একই ইন্টারফেস রয়েছে প্রতিটি প্লাগইনকে সেই পরীক্ষাগুলির অবদান রাখতে হবে যা তাদের প্রয়োজনীয় ইন্টারফেসটি প্রকাশ করে। এদিকে আসুন এবং যখন ইন্টারফেসটি পরিবর্তিত হবে, যা এটি ঘটবে তখন আপনি জানতে পারবেন আপনি কোন প্লাগইনগুলি ভঙ্গ করছেন। স্থানীয়ভাবে চালানোর জন্য আমাকে এই পরীক্ষাগুলি দিন এবং আমি PR প্রকাশ করার আগে আমি কী ভাঙছি তা জানতে পারি।
candied_orange

1
প্রযুক্তিগতের চেয়ে @lagarkane সু-সংজ্ঞায়িততা একটি নীতি বিষয়। সেখানে এমন সফ্টওয়্যার রয়েছে যা আপনার মত, কেবল একটি আপগ্রেডে পূর্ববর্তী আচরণটি ত্যাগ করুন। পার্ল 5 পার্ল 6 এর সাথে সামঞ্জস্যপূর্ণ নয়, পাইথন 2.7 পাইথন 3.4 এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ নয়। তারপরে এমন সফ্টওয়্যার রয়েছে যা যা ঘটে তা পুরানো কোডকে সমর্থন করে। আপনি এখনও আধুনিক ব্রাউজারগুলিতে নেটস্কেপ নেভিগেটর 4 এর জন্য লিখিত প্রায় সমস্ত জাভাস্ক্রিপ্ট কোড চালাতে পারেন। টিসিএল প্রোগ্রামিং ল্যাঙ্গুয়েজটি মূল সংস্করণ ইত্যাদির পিছনে ব্যাকওয়ার্ডের সামঞ্জস্যপূর্ণ উপায় ...

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

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

1
@ ক্যাসাব্ল্যাঙ্কা উভয়ই ম্যাকওএস এবং উইন্ডোজস বংশ অত্যন্ত সফল। (যুক্তিযুক্তভাবে, মানব অস্তিত্বের নিখুঁত ডলার পদে দুটি সেরা পণ্য।) কয়েক দশক ধরে তাদের একেবারে বিপরীত পন্থা ছিল। দৃশ্যত দুজনেই সফল হয়েছিল!
ফ্যাটি

8

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

আপনার প্রকল্পের কি contributing.mdনতুন বা মাঝে মাঝে অবদানকারীদের তাদের অবদানগুলি প্রস্তুত করতে সহায়তা করার মতো কিছু বা অনুরূপ কিছু রয়েছে? আপনার কি স্পষ্ট তালিকা আছে, কোন প্লাগইনগুলি মূল অংশ এবং এটি সামঞ্জস্যপূর্ণ থাকার প্রয়োজন?

নির্ভরতা ইত্যাদির কারণে যদি কোনও মেশিনে সবকিছু তৈরি করা শক্ত হয় তবে আপনি আপনার অবদানকারীদের ব্যবহারের জন্য বিল্ড-এনভায়রনমেন্ট হিসাবে ব্যবহারের জন্য প্রস্তুত ডকার ইমেজ তৈরির বিষয়ে ভাবতে পারেন।


1
উত্তর দেওয়ার জন্য ধন্যবাদ! হ্যাঁ আমাদের কাছে অবদানের দিকনির্দেশগুলি সর্বজনীনভাবে উপলভ্য রয়েছে তবে এটি আপনার পরামর্শ অনুসারে প্লাগইনগুলি তালিকাভুক্ত করে না যা ইতিমধ্যে একটি ভাল ধারণা হবে। ডকার ইমেজ তৈরি করা ইতিমধ্যে বিদ্যমান অবদান প্রক্রিয়ায় একটি দুর্দান্ত উন্নতির মতো বলে মনে হচ্ছে!
ইনপুটটির

8

সুতরাং তারা যখন কোরটিতে রিফ্যাক্টরিং পরিবর্তনের প্রস্তাব দেয় (যা এই দিনগুলিতে বেশ নিয়মিত ভিত্তিতে ঘটে) তখন তারা গিথুবটিতে টানতে অনুরোধ করার আগে কোডটি তাদের মেশিনে সংকলন করে তা পরীক্ষা করে।

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

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

আপনার প্লাগইন এপিআইয়ের স্পষ্ট সংস্করণ প্রয়োজন। সমস্ত ভি 1 প্লাগইন নির্মাণ এবং কাজ চালিয়ে যাওয়ার সময় এটি আপনাকে v2 বিকাশ করতে দেয়।

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


2

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

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

ডিজাইন সমস্যাগুলি ঠিক করা ভাল তবে এই সমস্যার জন্য অরথোগোনাল।


2

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

এই প্লাগইনটির তৃতীয় পক্ষের লাইব্রেরিগুলির উপর নির্ভরতা থাকতে পারে, যেমন CUDA উদাহরণস্বরূপ, এবং ব্যবহারকারী চান না, কীভাবে জানেন না বা কেবল হার্ডওয়্যার কারণে, এই ভাঙা প্লাগইনটি সংকলন করতে পারে না।

আপনার সমাধানটি সহজ: অবদানের প্রতিবন্ধকতা কম করুন

(1) সবচেয়ে সহজ উপায় সম্পাদনা-সংকলন-পরীক্ষা চক্রকে গতি দেয় এবং (2) পরিবেশের মসৃণ পার্থক্যগুলি বিল্ড সার্ভারগুলি সরবরাহ করে :

  • মৌমাছি মেশিনগুলি নিন: সংকলনের গতি বাড়ানোর জন্য 24, 48 বা 96 টি কোর, 2 জিবি র‌্যাম / কোর, এসএসডি।
  • তাদের সঠিক হার্ডওয়্যার রয়েছে তা নিশ্চিত করুন: এফপিজিএ, গ্রাফিক কার্ড, যা কিছু প্রয়োজন।
  • প্রাক ইনস্টল করা সমস্ত প্রয়োজনীয় সফ্টওয়্যার লাইব্রেরি সহ একটি ডকার চিত্র তৈরি করুন।

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

তারপর:

  • রক্ষণাবেক্ষণ করা প্লাগইনগুলি তৈরি / পরীক্ষা না করার জন্য তাদের কোনও অজুহাত নেই: তাদের কাছে সমস্ত কিছুই উপলব্ধ।
  • তাদের সিআই-চালিত পিআরএসের সাথে দীর্ঘ প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে না: তাদের বর্ধিত সংকলন এবং ডিবাগ করার ক্ষমতা রয়েছে (অনুমানের পরিবর্তে)।

সাধারণভাবে, বিল্ড সার্ভারগুলি একাধিক অবদানকারীদের মধ্যে ভাগ করা যায়, তবে বিশেষ হার্ডওয়্যার পেরিফেরিয়ালরা যখন জড়িত থাকে তখন এটি কোনও অবদানকারীকে নিজের দ্বারা পেরিফেরিয়াল ব্যবহার করা প্রয়োজন।


উত্স: পশুর দাম এবং আমাদের বিভিন্ন ধরণের মডেলের প্রয়োজন অনুসারে এফপিজিএ ব্যবহার করে সফ্টওয়্যারটিতে কাজ করা, আপনি প্রতিটি বিকাশকারীর মেশিনে এফপিজিএর প্রতিটি মডেল ইনস্টল করেন না।


1

যদি কোনও চুক্তি পরিবর্তন না করে মূল অবদানটি নির্ভরশীল সফ্টওয়্যারকে ভেঙে দিতে পারে তবে এটি প্রস্তাব দেয় যে:

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

হয় সমস্যার সমাধান করা সহজ হওয়া উচিত, তবে আপনি উল্লেখ করেছেন যে মূল দলে এমন করার ক্ষমতা নাও থাকতে পারে। একটি বিকল্প হ'ল সম্প্রদায়কে সমস্যাটি সমাধানে সহায়তা চাইতে হবে।


1

এটির সম্ভাব্য সমাধান হিসাবে অন্য কেউ উত্থাপন করেছে বলে মনে হয় না।

  • আপনি যে সমস্ত প্লাগইন অ্যাক্সেস করতে পারেন তা তালিকাভুক্ত করুন।
  • এই প্লাগইনগুলি নির্ধারণ করে এমন সমস্ত পরীক্ষা চালান
  • মূল এবং সমস্ত প্লাগইনগুলির মধ্যে সমস্ত অনুরোধ / প্রতিক্রিয়া / মিথস্ক্রিয়া রেকর্ড করুন
  • এই রেকর্ডিংগুলি সঞ্চয় করুন, এগুলি এখন মোটামুটি সামঞ্জস্যতার পরীক্ষা।

মূল বিকাশকালে, বিকাশকারীদের এই সামঞ্জস্যতা পরীক্ষা চালাতে উত্সাহিত করুন। যদি তারা ব্যর্থ হয় তবে চেক ইন করবেন না।

এটি 100% সামঞ্জস্যতা নিশ্চিত করবে না তবে এটি আরও অনেক সমস্যা এবং তাড়াতাড়ি ধরা পড়বে।

একটি গৌণ সুবিধা হ'ল এই রেকর্ডিংগুলি হাইলাইট করতে পারে যে কোন ইন্টারফেসগুলি সক্রিয়ভাবে ব্যবহৃত হচ্ছে এবং কোন বৈশিষ্ট্যগুলি সক্রিয়ভাবে ব্যবহৃত হচ্ছে।


0

পরিস্থিতিটি মনে হচ্ছে এমনটি বুঝতে সমস্যা হচ্ছে: সিআই কেবল একটি শাখা তৈরি করে?

সিআই দিয়ে আপনি একাধিক শাখা তৈরি করতে পারবেন না এমন কোনও কারণ আছে কি?

এই সমস্যার সহজ সমাধান হ'ল যে কোনও অবদানকারীকে তার বৈশিষ্ট্য শাখায় সিআই বিল্ড চালানো সম্ভব করে তোলে

তারপরে সেই শাখার টান অনুরোধটি স্বীকার করার জন্য আপনার কেবল বৈশিষ্ট্য শাখায় একটি সফল সিআই বিল্ড প্রয়োজন।


এটি ইস্যুটি সংক্ষেপ করে বলে মনে হচ্ছে।
ফ্যাটি

1
প্রশ্নটি বলছে "বা অবদানকারী [...] কোড পরিবর্তন করে, তার শাখায় ঠেলাঠেলি করে, সিআই এর সংকলন শেষ করার জন্য অপেক্ষা করে, সাধারণত আরও ত্রুটি হয় এবং সিআই খুশি না হওয়া পর্যন্ত প্রক্রিয়াটি পুনর্বার করেন" - সুতরাং আমি এটি মনে করি ইতিমধ্যে কেস, তবে সমস্যাটি হ'ল এত দীর্ঘ সম্পাদনা-ডিবাগ চক্রটি বিকাশ করা কিছুটা বেদনাদায়ক।
npostavs

@ এনপোস্টাভস ধন্যবাদ, আমি অনুমান করি যে আমি এটি প্রথম বা দু'বার পড়েছিলাম তা মিস করেছি। তবুও ... আমার ধারণা আমি সমস্যাটি মনে করি না। অনেকগুলি নির্ভরশীলতা রয়েছে, সেগুলি ভেঙে ফেলা যায় না, তাই কোনও অবদানকারীকে তাদের সবার সাথে সামঞ্জস্য থাকা দরকার। এটি বড় সফ্টওয়্যার প্রকৃতি। বিল্ডটি দ্রুততর করার জন্য অবশ্যই কাজ করা যেতে পারে, তবে অন্যথায় কী শর্টকাট থাকতে পারে?
ক্যারলেসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.