কোন পর্যায়ে একটি অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভার আকর্ষণীয়?


9

আমি জেনকিন্সের মতো সিআই সার্ভারগুলি সম্পর্কে কিছুটা পড়ছি এবং আমি ভাবছি: কোন মুহূর্তে এটি কার্যকর?

কারণ অবশ্যই একটি ক্ষুদ্র প্রকল্পের জন্য যেখানে আপনার কেবল 5 ক্লাস এবং 10 ইউনিট পরীক্ষা রয়েছে, সেখানে আসল প্রয়োজন নেই।

এখানে আমরা প্রায় 1500 ইউনিট পরীক্ষা পেয়েছি এবং তারা প্রায় 90 সেকেন্ডে (পুরানো কোর 2 ডুয়ো ওয়ার্কস্টেশনগুলিতে) পাস করেছে (কারণ তারা সত্যই "ইউনিট" পরীক্ষা করছে এবং তাই এটি খুব দ্রুত)। আমাদের নিয়মটি হ'ল কোনও পরীক্ষা ব্যর্থ হলে আমরা কোড কমিট করতে পারি না।

সুতরাং প্রতিটি বিকাশকারীরা রিগ্রেশন প্রতিরোধে তার সমস্ত পরীক্ষা শুরু করে।

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

এটি এখনও আমার কাছে খুব পরিষ্কার নয়: আমি কি জেনকিনসের মতো সিআই সার্ভার স্থাপন করব? কী এনে দেবে?

এটি কি কেবল গতি বাড়ানোর জন্য কার্যকর? (আমাদের ক্ষেত্রে কোনও সমস্যা নয়)

পুরানো বিল্ডগুলি পুনরায় তৈরি করা যায় বলে এটি কার্যকর? (তবে আমরা পুরানো রেভগুলি পরীক্ষা করে মার্চুরিয়াল দিয়ে এটি করতে পারি)

মূলত আমি বুঝতে পারি এটি কার্যকর হতে পারে তবে আমি কেন ঠিক তা দেখতে ব্যর্থ হই।

আমি উপরে উত্থাপিত পয়েন্টগুলি বিবেচনায় নেওয়া কোনও ব্যাখ্যা সবচেয়ে স্বাগত হবে।

উত্তর:


9

এটি কি কেবল গতি বাড়ানোর জন্য কার্যকর? (আমাদের ক্ষেত্রে কোনও সমস্যা নয়)

আপনার প্রক্রিয়া সাইকেল চালানোর যে কোনও সময় আপনি বিকাশের প্রবাহে যেতে ব্যয় করতে পারতেন।

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

পুরানো বিল্ডগুলি পুনরায় তৈরি করা যায় বলে এটি কার্যকর? (তবে আমরা পুরানো রেভগুলি পরীক্ষা করে মার্চুরিয়াল দিয়ে এটি করতে পারি)

না, আপনি বিল্ড পুনরায় তৈরি করবেন না। আপনি এটি তৈরি করা বিল্ডটি ব্যবহার করেন এবং আপনার ধরে রাখার সেটিংস যতক্ষণ না বাইরে বেরিয়ে আসে ততক্ষণ এটিকে চারপাশে রাখুন।

আপনি কোনও দেবের বাক্সের বিপরীতে এটি বিল্ড সার্ভারে তৈরি করেন।

এখানে আমরা প্রায় 1500 ইউনিট পরীক্ষা পেয়েছি এবং তারা প্রায় 90 সেকেন্ডে (পুরানো কোর 2 ডুয়ো ওয়ার্কস্টেশনগুলিতে) পাস করেছে (কারণ তারা সত্যই "ইউনিট" পরীক্ষা করছে এবং তাই এটি খুব দ্রুত)। আমাদের নিয়মটি হ'ল কোনও পরীক্ষা ব্যর্থ হলে আমরা কোড কমিট করতে পারি না।

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

আপনি এটি ডি বাক্সগুলিতে চালাতে চান না, কারণ পরিবেশটি সেট আপ এবং রক্ষণাবেক্ষণ করা ব্যথা হবে। ইন্টিগ্রেশন টেস্টগুলি কার্যকর করতে খুব ধীর হয়ে থাকে।

কোন পর্যায়ে এটি দরকারী?

এটি অন্য যে কোনও বিনিয়োগের মতো।

এটি একবার ব্যবহার করুন এবং আপনি পিছনে আসতে পারেন বা শুধুমাত্র বিরতি হতে পারে। এটি একাধিক প্রকল্পে ব্যবহার করুন এবং আপনি সম্ভবত সামনে চলে আসবেন।

এটি আপনার করা অ্যাপ্লিকেশনগুলির ধরণের উপরও নির্ভর করে।

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

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


2
+1 ... ঠিক আছে এখন আপনি আমার সাথে কথা বলছেন! "হারানো না সময় করছেন তৈরী করে" অনেক ভালো যুক্তি আমি। আমাদের বিল্ডটি প্রতিদিন বেশ কয়েকবার করা হয় এবং কেবলমাত্র একটি ক্লিক লাগে তবে ... এটি সমস্ত পরীক্ষা চালানোর চেয়ে ধীর হয় (সুতরাং ডেভস সময় হারাচ্ছে)। এছাড়াও, আমি আরও জটিল পরীক্ষার ধারণা পছন্দ করি: এটি আমি দেখতে পাচ্ছি যে আমরা সিআই সার্ভার থেকে কীভাবে উপকৃত হতে পারি। ২,৩ এবং ১০ সম্পর্কিত: হ্যাঁ, হ্যাঁ এবং হ্যাঁ (পিঁপড়ার কাজটিতে একটি ক্লিক) ... তবে মানুষ, এই 12 টি নিয়ম আপডেট করা উচিত: আপনি কি সোর্স নিয়ন্ত্রণ ব্যবহার করেন? আমি বরং সিভিএস ব্যতীত থাকতাম, উদাহরণস্বরূপ; ) (ঠিক অর্ধ-কৌতুক;)
সিড্রিক মার্টিন

7

কোন পর্যায়ে এটি দরকারী?

  • আপনার বিল্ড + পরীক্ষার চক্র কয়েক মিনিটেরও বেশি সময় নেয়। 5 মিনিটের পরীক্ষার রান দিয়ে আপনি আর সমস্ত পরীক্ষা নিজেই চালাতে চান না, বিশেষত ছোট পরিবর্তনগুলির জন্য।
  • আপনি একাধিক রূপ তৈরি করতে শুরু করেছেন। আপনার যদি বিভিন্ন কাস্টমাইজেশন সহ বেশ কয়েকটি গ্রাহক থাকে তবে আপনার প্রতিটি বৈকল্পিকের বিরুদ্ধে পরীক্ষা চালানো উচিত, যাতে কাজের পরিমাণটি বেশ দ্রুত বাড়তে শুরু করে। আপনি বিকাশকারী মেশিনে একটি বৈকল্পিকের জন্য পরীক্ষার স্যুটটি চালাতে চান এবং বাকিটি চালানোর জন্য এটি সিআইয়ের কাছে রেখে যান।
  • আপনি অটোমেটেড ইন্টিগ্রেশন টেস্টগুলি লিখেন যার জন্য কিছু অ-তুচ্ছ পরীক্ষা পরিবেশের সেটআপ প্রয়োজন। উন্নততর পরিবর্তনের কারণে বিকাশকারীদের বিভিন্ন পরিবেশে তাদের পরিবেশ পরিবর্তন হতে পারে বলে আপনি একটি নীতিগত পরীক্ষার পরিবেশের বিরুদ্ধে পরীক্ষা করতে চান Than প্রচলিত পরিবেশের জন্য সিআই সবচেয়ে উপযুক্ত জায়গা।
  • পরীক্ষকরা কেবলমাত্র সিআই থেকে সর্বশেষতম বিল্ডটি টানতে পারেন। সুতরাং তাদের কাছে বিকাশের সরঞ্জামগুলি থাকা, শেখার এবং তাদের ব্যবহারের দরকার নেই বা কোনও বিকাশকারীকে ম্যানুয়ালি তাদের বিল্ড প্রেরণ করতে হবে না।
  • আপনি যখন মুক্তির জন্য প্রস্তুতি নিচ্ছেন:
    • পরীক্ষা আরও গুরুত্বপূর্ণ হয়ে ওঠে, সুতরাং পরীক্ষার জন্য প্রস্তুত বিল্ডগুলির সাথে এক জায়গা থাকা আরও কার্যকর।
    • আপনি নিশ্চিত যে সমস্ত বিল্ড একই বিল্ড পরিবেশের সাথে নির্মিত, তাই আপনি এমন সমস্যা এড়াতে পারেন যা বিকাশকারী ইনস্টলেশনগুলির মধ্যে সূক্ষ্ম পার্থক্যের দ্বারা প্রবর্তিত হতে পারে।
    • আপনি নিশ্চিত যে সংস্করণ নিয়ন্ত্রণ সিস্টেমে যা যাচাই করা হয়েছে ঠিক তেমনই আপনি নির্মাণ করছেন। উন্নয়নের সময় যদি কেউ কিছু পরীক্ষা করতে ভুলে যায় তবে আপনি বেশ দ্রুত খুঁজে পাবেন, কারণ এটি পরবর্তী বিকাশকারীদের জন্য ব্যর্থ হবে। তবে যদি এই ধরনের বিল্ড কিউএ বা উত্পাদনে পিছলে যায় এবং তারা কোনও বাগ রিপোর্ট করে তবে এটি সন্ধান করা খুব কঠিন hard

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


+1, ধন্যবাদ তবে বিল্ড আর্গুমেন্টটি আমি সত্যিই এটি পাইনি: যখন সমস্ত বিকাশকারীরা যা কিছু পুনরুদ্ধার করতে পারেন এবং ঠিক একই বিল্ডটি তাদের মেশিনে তৈরি করতে পারেন তখন অ্যাপটি কি আরও দৃust় হয় না? আমরা কি "বিকাশকারীর অ্যাকাউন্টে বেঁধে থাকা" বিল্ডসের সমস্যাটিকে " সিআই সার্ভারের সাথে বেঁধে রেখে" স্থানান্তরিত করছি না ? আমার অর্থ: সিআই সার্ভারটি নিজেই ভুলভাবে কনফিগার করা হতে পারে এবং তাই বিল্ডটি সিআই সার্ভারের ইনস্টলেশনটির সূক্ষ্ম পার্থক্যের উপর নির্ভরশীল হয়ে ওঠে !? এটি বলেছিল যে আমি বুঝতে পারি যে এটি কার্যকর হতে পারে: আমি মনে করি আমাকে কেবল "এটি ইনস্টল করে দেখুন" দরকার ছিল:)
সিড্রিক মার্টিন

@ সিড্রিকমার্টিন: সিআই সার্ভারটি একটি মাত্র, সুতরাং আপনি যে পরিবেশটি করেছেন এটির মধ্যে পার্থক্য অনুসারে আপনি বাগটি প্রবর্তন করতে পারবেন না এবং আপনি সিআই সার্ভারে অন্য কাজ না করার কারণে আপনি এটি ভাঙার সম্ভাবনা কম able ।
জানু হুডেক

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

6

আপনার দলে ১ সদস্যের বেশি সদস্য থাকলে আমার জন্য একটি সিআই আকর্ষণীয় হয়ে ওঠে।

"আমার জন্য পরীক্ষা চালানো অন্য একটি পিসি" হিসাবে আপনাকে সিআইয়ের ভাবনা বন্ধ করতে হবে। সিআই একটি সংজ্ঞায়িত এবং স্বয়ংক্রিয় বিল্ড প্রক্রিয়া এবং রিলিজ পরিচালনা সম্পর্কে।

সিআই হ'ল একক অনুমোদনপ্রাপ্ত সত্তা যা আপনার সফ্টওয়্যার রিলিজ তৈরি করে। যদি এটি সিআই-তে তৈরি না হয় তবে এটি ঘটেনি।

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

এটি এড়ানো সমস্যাগুলি:

  • মুক্তির জন্য কে দায়বদ্ধ
  • এই ব্যক্তি 24/7 উপলব্ধ?
  • তবে এটি আমার মেশিন সিনড্রোমে তৈরি করে
  • আমরা প্রকাশিত সংস্করণটি কী ছিল তা সম্পর্কে সমস্ত অস্পষ্টতা সরিয়ে দেয়

সুবিধা (সমস্ত উল্লেখ করার জন্য কেবলমাত্র অনেকগুলি):

  • স্বয়ংক্রিয় সংস্করণ নম্বর
  • ট্র্যাকিং ইন্টিগ্রেশন ইস্যু করুন
  • স্বয়ংক্রিয় মেট্রিক জেনারেশন
  • স্থির কোড বিশ্লেষণ
  • স্বয়ংক্রিয় স্থাপনা
  • মাল্টি-স্টেজ সেটআপস

5

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

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

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

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

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

আমার ঠিক একই সমস্যা ছিল এবং প্রায় এক বছর আগে থেকে আমার অবসর সময়ে সিন্টিয়েন্টের বিকাশ ঘটায় এটি। আমার ভিত্তিটি ছিল এটি ইনস্টল করা, কনফিগার করা এবং ব্যবহার করা সহজ এবং সহজতর করা এবং সেই মানের মানের মেট্রিকগুলি সরবরাহ করা যা প্রত্যেকে একেবারে ব্যর্থ হয় বা আন্ডার ডিলিভারগুলি। সুতরাং, এই দীর্ঘ উত্তরের পরে আমার লজ্জাজনক প্লাগটি প্রকল্পটির জন্য গিটহাব লিঙ্কটি নির্দেশ করে (যা নিখরচায় ও মুক্ত-উত্স, ন্যাচ)। স্পষ্টতই এর কিছু দুর্দান্ত স্ক্রিনশটও রয়েছে। :-) https://github.com/matamouros/cintient

আশা করি আমি আপনাকে সাহায্য করেছি।

(দ্রষ্টব্য: ব্রায়ান ওকলির মন্তব্যের পরে সম্পাদিত, আরও ভাল উত্তর তৈরি করতে আমার আরও বেশি সময় নেওয়া উচিত ছিল বলে আমি মনে করি তিনিও ঠিক বলেছিলেন।)


আমি ডাউন-ভোট দিয়েছি কারণ এটি প্রশ্নের উত্তর দেয় না, এটি কেবল একটি বিজ্ঞাপন। আপনি ঠিকানাটি কখনো যখন পরোক্ষভাবে চেয়ে অন্য প্রশ্ন অংশ পরোক্ষভাবে "এখন আমার টুল দিয়ে"।
ব্রায়ান ওকলে

@ ব্রায়ান-ওকলির পরামর্শ অনুসারে আমি উত্তরটি সম্পাদনা করতে কিছুটা সময় নিয়েছি।
মাতামোরাস

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