অবিচ্ছিন্ন একীকরণের সহজ ব্যাখ্যা


32

আপনি কীভাবে অবিচ্ছিন্ন একীকরণ সংজ্ঞায়িত করবেন এবং সিআই সার্ভারে কোন নির্দিষ্ট উপাদান রয়েছে?

ক্রমাগত একীকরণ কী তা বিপণন বিভাগের কাউকে আমি ব্যাখ্যা করতে চাই। তারা সোর্স নিয়ন্ত্রণ বোঝে - অর্থাৎ তারা সাবভারশন ব্যবহার করে। তবে আমি তাদের সিআই কী তা সঠিকভাবে ব্যাখ্যা করতে চাই। Wikipedia নিবন্ধটি কখনো সঠিকভাবে এটা সংজ্ঞায়িত, মার্টিন জালিয়া নিবন্ধ কেবল নিচের, যা মূলত একটি অনুলাপ 'ইন্টিগ্রেশন' এর একটি অস্পষ্ট ব্যাখ্যা দ্বারা অনুসরণ দেয়:

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

আপডেট : আমি তাদের এই চিত্রটি প্রেরণ করেছি, আমি এর চেয়ে সহজতর কোনওটি খুঁজে পেল না।

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

আপডেট 2 : বিপণন অধ্যায় থেকে ফিরে ফিড (সেই সময়ের জন্য যখন 3 টি প্রশ্ন ছিল):

আমি আসলে সমস্ত 3 টি উত্তর পছন্দ করি - বিভিন্ন কারণে। আমি তাদের সকলকে ধন্যবাদ জানাতে লগ ইন করার মতো অনুভব করছি!

অবশ্যই তিনি পারবেন না - তাই তাঁর পক্ষ থেকে ধন্যবাদ :)

আপডেট 3 : আমি উইকিপিডিয়া নিবন্ধটি দেখে বুঝতে পেরেছি যে এতে নীতিগুলি রয়েছে যা আপনি যখন কেবল শিরোনাম গ্রহণ করেন তা বেশ ভাল তালিকা:

  1. একটি কোড সংগ্রহস্থল বজায় রাখুন
  2. বিল্ডটি স্বয়ংক্রিয় করুন
  3. বিল্ডটি স্ব-পরীক্ষা করুন
  4. প্রত্যেকে প্রতিদিন বেসলাইনে প্রতিশ্রুতিবদ্ধ
  5. প্রতিটি প্রতিশ্রুতি (বেসলাইন) তৈরি করা উচিত
  6. বিল্ডটি দ্রুত রাখুন
  7. উত্পাদন পরিবেশের এক ক্লোন পরীক্ষা করুন
  8. সর্বশেষতম বিতরণযোগ্য হওয়া সহজ করুন easy
  9. প্রত্যেকে সর্বশেষতম বিল্ডের ফলাফল দেখতে পাবে
  10. স্বয়ংক্রিয় স্থাপনা

3
ওও আপনার বিপণন বিভাগ সাবভার্সন ব্যবহার করে? "খুব স্থানীয়করণ" হিসাবে বন্ধ করার প্রলোভন ... ;-)
জেরোয়েন

ওয়েবসাইটে জিরোইন ইয়েপ, সত্যিই, ফাইলগুলির জন্য। আমি তাদের একটি ওয়েব পৃষ্ঠায় একটি দুর্দান্ত বড় লাল বোতাম তৈরি করেছি যা সার্ভারে সাবভার্সন আপডেট করার জন্য 'এটি করুন' বলে। :)
icc97

উত্তর:


27

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

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

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

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


1
অবিচ্ছিন্ন ইন্টিগ্রেশন বিল্ড স্ট্যাটাসের বিষয়ে, তবে পরীক্ষাগুলিরও যত্ন করে।
কোয়ান্টিন প্রাদেট

1
এবং স্থাপনা, এটি সংকলন করার জন্য এবং পরীক্ষাগুলি চালানোর পক্ষে পর্যাপ্ত নয়, তবে আপনার বাইনারিগুলি একটি পরিবেশেও প্রেরণ করা উচিত যাতে এটি লোকেরা (বা স্বয়ংক্রিয় সরঞ্জামগুলি) দ্বারাও পরীক্ষা করতে পারে।
gbjbaanb

1
যেহেতু প্রশ্নটির একটি সহজ ব্যাখ্যা জিজ্ঞাসা করা হয়েছিল আমি সিআই সিস্টেমে যেতে পারে এমন অনেকগুলি (বেশিরভাগ সময় প্রকল্প / দল নির্দিষ্ট) বিশদটি রেখে দিয়েছি।
সি_মেকার

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

1
@ ব্যবহারকারী ৮৮৮৮৪৮: আমার উত্তরে আমি বোঝাচ্ছি যে 'পরীক্ষা' একটি নির্মাণের অংশ is এবং পার্শ্ব নোট হিসাবে, টিডিডি গুণমান পরীক্ষা করার জন্য পরীক্ষা করার চেয়ে আলাদা। টিডিডির পার্শ্ব-প্রতিক্রিয়া হিসাবে, আপনার লিখিত পরীক্ষাগুলি ভাল হবে তবে কোনও টিডিডি না করেই আপনার পরীক্ষা করা যেতে পারে।
সি_মেকার

33

আমি আপনার বিপণন বিভাগের জন্য অনুমান করি যে সিআই কীভাবে কাজ করে তা গুরুত্বপূর্ণ নয় , তবে আপনার সফ্টওয়্যারটির নতুন প্রকাশের জন্য সিআই কী বোঝায়

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

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


4
এটি যে সুবিধা সরবরাহ করে তার দৃষ্টিকোণ থেকে এটি কাছে যাওয়ার জন্য +1
পোকে

17

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

অনেক আগে এই লিখিত হবে:

  1. ডাটাবেস এবং প্রয়োজনীয়তার জন্য স্কিমার সাথে সম্মত হন - এটি কয়েক সপ্তাহ সময় নেয় কারণ এটি শীঘ্রই দেখতে পাবেন কেন এটি নিখুঁত হতে হয়েছিল
  2. 3 টি টুকরা 3 টি দেব বা 3 টি স্বতন্ত্র দলকে অর্পণ করুন
  3. প্রতিটি দেব তাদের টুকরোয় কাজ করবে এবং সপ্তাহে বা মাস ধরে তাদের নিজস্ব ডাটাবেস অনুলিপি ব্যবহার করে তাদের টুকরো পরীক্ষা করবে।

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

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

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

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

  • তিনি যে স্ক্রিনটিতে কাজ করছেন না তার একটি বোতাম ছিল যা এখনও কিছুই করেনি
  • কোনও ব্যবহারকারী স্ক্রিন ডিজাইনে সাইন আপ করেন নি (সুনির্দিষ্ট রঙ এবং ফন্ট; পর্দার অস্তিত্ব, এর ক্ষমতা এবং এটিতে কী বোতাম রয়েছে 300 পৃষ্ঠাগুলিতে।)

এটি তার মতামত ছিল যে আপনি কাজ শেষ না হওয়া পর্যন্ত উত্স নিয়ন্ত্রণে রাখবেন না। তিনি সাধারণত এক বছর দুটি বা দুটি চেকইন করেছিলেন। আমাদের কিছুটা দর্শনের পার্থক্য ছিল :-)

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


2
আমাদের একটি অনুরূপ গল্প ছিল যার মধ্যে আমরা এসপি ২০০৩ এ এসপি ২০০ to এ নির্মিত একটি কাস্টম অ্যাপ্লিকেশনকে আপগ্রেড করেছিলাম V ভিএসএস (হ্যাঁ, ভিএসএস :) ব্যবহার করে প্রতিটি বিকাশকারী তাদের ফাইলের একটি অংশ পরীক্ষা করে এক সপ্তাহ এবং দু'বারের জন্য কোড করে থাকে, তারপরে যখন আমরা সংহত করি আমাদের কোড, বুম, যখন সমস্যাটি শুরু হয়েছিল তখন থেকেই আমাদের কোডটি উল্লেখযোগ্যভাবে বিচ্যুত হয়েছিল। আমরা এক মাসের জন্য ইন্টিগ্রেশন সমস্যাটি স্থির করেছি, এবং প্রকল্পটি সপ্তাহের দিনগুলিতে যারা খুব দূরে থাকে তাদের থাকার জন্য একটি হোটেল ভাড়া নিয়েছিল। সেদিন, আমি প্রতিদিনের ভিত্তিতে কোডটি সংহত করতে শিখেছি :-)
ওনেসিমাসউনবাউন্ড

@ ওনিসিমাসউনবাউন্ড আমার মনে আছে ভিএসএস থেকে ক্লিয়ারকেস ... আগুনের আড়ালে b পানীয়গুলির জন্য একই সংস্থায় ফিরে আসার কয়েক বছর পরে, আমি মনে করি কেউ একজন 'বীট' নামে এই নতুন উত্স নিয়ন্ত্রণের কথা উল্লেখ করে একজন সহযোগী বিকাশকারীকে হাসছে, "আমাদের কীসের জন্য অন্য উত্স নিয়ন্ত্রণ ব্যবস্থা দরকার ??"
icc97

1
আপনাকে ধন্যবাদ - আমি সিআই বুঝতে আগে লড়াই করার চেষ্টা করেছি কারণ বিকল্পটি কী তা আমি জানতাম না
রাইস

মজাদার. আমার কাছে এটি সিআইয়ের জলপ্রপাতের সাথে তুলনা করার মতো শোনাচ্ছে। তবে আপনি একটি জলপ্রপাতবিহীন পদ্ধতি ব্যবহার করতে পারেন যা এই সমস্যাগুলি এড়ায় (পুনরাবৃত্ত বিকাশের মতো) এবং সিআই ব্যবহার না করে।
ড্যান মোল্ডিং

@ ড্যানমোডিং যদি আমি চটজলদি এবং পুনরাবৃত্তিশীল হয়ে থাকি এবং আমার অংশে এমন কোনও বৃহত্তর অংশের অংশে কী না যা অন্য কেউ যা করছে তার সাথে সংহত না হয়, আমি সিআই করছি না। হেক, আপনি জলপ্রপাত এবং সিআই করতে পারেন। এগুলি সবই ডিজাইন করুন, এগুলি কোড করুন, আপনি চাইলে সবগুলি পরীক্ষা করুন - প্রত্যেকে যদি প্রত্যেকের কোড / স্কিমা / ফাইল লেআউটটি সারাক্ষণ ব্যবহার করে থাকেন তবে আপনি জলপ্রপাতটি ব্যবহার করছেন এমন কি সিআই। সংযোগটি হ'ল সিআই ব্যতীত আপনি বিডিইউএফের দ্বারা বেঁচে থাকুন এবং মরে যাবেন কারণ যুক্তিযুক্ত দৈর্ঘ্যের ইন্টিগ্রেশন পর্ব থাকার এটিই আপনার একমাত্র আশা (এবং এটি একটি বিবর্ণ আশা হিসাবে পরিণত হয়েছে)। সিআইকে গ্রহণ করা আমাদের বিডিইউএফ ছাড়ার অনুমতি দেয়।
কেট গ্রেগরি 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.