সিআই কীভাবে ব্যাখ্যাযোগ্য ভাষার জন্য ব্যবহার করা যেতে পারে?


23

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

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



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

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

উত্তর:


32

শব্দ হিসাবে ক্রমাগত সংহতকরণ দুটি স্বতন্ত্র ধারণা বোঝায়।

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

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

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

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


3
"আপনার যদি পরীক্ষার স্যুট থাকে তবে সিআই কেবল তা বোঝায়" - নোট করুন যে একটি সংকলিত ভাষার জন্য, সংকলকটি নিজেই একটি প্রাথমিক পরীক্ষার স্যুট যা প্রচলিত সাধারণ ত্রুটিগুলি ধরা দেয়।
ব্যবহারকারী 253751

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

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

24

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

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


8
আমি যুক্ত করব: সিস্টেমটি স্বয়ংক্রিয়ভাবে পরীক্ষার সর্বাধিক সুস্পষ্ট উপায় হ'ল এটি স্বয়ংক্রিয়ভাবে কার্যকর করা। যেমন আপনি জেমেটার বা সেলেনিয়ামের মতো সরঞ্জাম ব্যবহার করে কোনও ওয়েবসাইট পরীক্ষা করতে পারেন।
পুনরায় পোস্টার

7

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

অবিচ্ছিন্ন ইন্টিগ্রেশন পাইপলাইন প্রায়শই সম্পাদন করে এমন অন্যান্য কিছু কাজ আমি হাতছাড়া ভাবতে পারি:

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

কঠোর অর্থে "অবিচ্ছিন্ন সংহতকরণ" এর সীমানা লাইনে কিছুটা এগিয়ে গেলে আপনি এগুলিও করতে পারেন:

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

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

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

এবং সম্ভবত কিছু অন্যান্য সুবিধা যা মাথায়ও আসেনি।


উত্তরের জন্য ধন্যবাদ. উদাহরণগুলি দুর্দান্ত। আমি আশা করি গ্রহণযোগ্য হিসাবে আমি একাধিক উত্তরকে ভোট দিতে পারি: - /
লর্ড লোহ।

@LordLoh। কোন চিন্তা করো না. আমি সাহায্য করতে পেরে আনন্দিত could =) আমাকে জানানোর জন্য ধন্যবাদ।
jpmc26

1
উত্সাহিত, দুর্দান্ত উত্তর। যে কোনও কিছুর মতো, যদি খারাপভাবে করা হয় তবে আপনি সম্ভবত বিজ্ঞাপনিত সুবিধাগুলি কাটাতে পারবেন না। ইজি ধারাবাহিকতা, প্রক্রিয়া জ্ঞান, সরলতা সবই ভুগতে পারে যদি আপনি ওভারবিল্ড হন। সুতরাং ... আপনার প্রয়োজনগুলি বাস্তবসম্মতভাবে মূল্যায়ন করুন এবং গডস্পিড!
brian_o

1

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

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

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