স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ যা বিল্ডটিকে ব্যর্থ করে


43

আমার একজন সহকর্মী আমাকে বলেছিলেন যে তিনি আমাদের সিআই সার্ভারটি সেই ব্যর্থতার প্রতিশ্রুতি ফিরিয়ে আনার বিষয়ে চিন্তাভাবনা করছেন যা বিল্ডটি ব্যর্থ হয়েছিল, তাই HEADইন masterসর্বদা স্থিতিশীল থাকে (কমপক্ষে বিল্ডটি পাস করার ক্ষেত্রে)।

এটি কি সেরা অনুশীলন বা masterবিকাশকারী এটি ঠিক না করা অবধি কেবল ভাঙা ছেড়ে দেওয়ার চেয়ে সমস্যাযুক্ত হতে পারে ?

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

সম্পাদনা: এটি masterবা অন্য কোনও উন্নয়ন শাখা কিনা তা বিবেচনাধীন নয় , তবে প্রশ্নটি একই থাকে: সিআই সিস্টেমটি কি বিল্ডটি ব্যর্থ করে এমন কোনও প্রতিশ্রুতি ফিরিয়ে দেবে?

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

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

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


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

1
@ থারস্টেনমেলার ভালভাবে ধারণা করুন যে এটি সমস্ত বিকাশকারীরা ব্যবহার করে এমন একটি উন্নয়ন শাখায় রয়েছে। সিআই সিস্টেমটি কি বিল্ডটি ব্যর্থ করে এমন প্রত্যাবর্তন করবে?
কার্লোস ক্যাম্পেডার

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

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

2
... কেন এটি এত ব্যর্থ বিল্ডস শুরু করতে মাস্টার হিসাবে গৃহীত হয় না?
ব্যবহারকারী 253751

উত্তর:


55

আমি নিম্নলিখিত কারণে এটি করার বিরুদ্ধে:

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

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

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


1
এছাড়াও, কেবলমাত্র সফল বিল্ডগুলিই এমন একটি "বিল্ড ড্রপ" তৈরি করতে পারে যা স্থাপন করা যেতে পারে। যদি কোনও বিল্ড ব্যর্থ হয়, তবে কোনও স্থাপনযোগ্য বিল্ড ড্রপ হওয়া উচিত নয়, তাই কোনওরকম ক্লায়েন্টদের কাছে খারাপ কোড প্রকাশ করার ঝুঁকি থাকা উচিত নয়।
মার্ক ফ্রিডম্যান

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

26

প্রথমে পদগুলিতে সম্মত হই।

আমি ব্যক্তিগতভাবে দুটি পৃথক পরিস্থিতিতে পার্থক্য করার জন্য ধারাবাহিক বিল্ড এবং ক্রমাগত একীকরণ শব্দটি ব্যবহার করি:

  • অবিচ্ছিন্ন বিল্ড: এমন একটি সরঞ্জাম যা শেষ বিল্ডের পরে থেকে সংগ্রহস্থলটি পরিবর্তিত হয় এবং পর্যায়ক্রমে এটি তৈরি / পরীক্ষার পরে যদি পর্যায়ক্রমে পরীক্ষা করে।
  • অবিচ্ছিন্ন একীকরণ: এমন একটি সরঞ্জাম যা টানুন অনুরোধগুলি গ্রহণ করে এবং তা দৃশ্যমান করার আগে সর্বশেষ মাথার বিরুদ্ধে তাদের বৈধ করে তোলে।

পরবর্তী, অবিচ্ছিন্ন একীকরণের অর্থ হ'ল এটির সংরক্ষণাগারটি সর্বদা সবুজ 1 : এটি কঠোরভাবে ভাল।

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

1 : পরিবেশগত কারণগুলি একটি বিল্ডকেও জটিল করে তুলতে পারে, উদাহরণস্বরূপ, হার্ড-কোডড বছর (2015) সহ একটি পরীক্ষা 2016 সালের জানুয়ারিতে ব্যর্থ হতে শুরু করতে পারে, একটি ডিস্ক পূর্ণ হতে পারে, ... এবং অবশ্যই অস্থিরতার প্লেগ রয়েছে পরীক্ষা। আমি এখানে অহংকার করে এই বিষয়গুলি উপেক্ষা করছি; না হলে আমরা কোথাও পাব না।


আপনার যদি একটি ক্রমাগত বিল্ড সেটআপ থাকে, আপনি সত্যই বিল্ড ভেঙে ফেলে থাকতে পারে এমন কমিটগুলির বিপরীতটি স্বয়ংক্রিয় করতে পারেন, তবে কয়েকটি সূক্ষ্মতা রয়েছে।

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

নোট করুন যে এই সিস্টেমের সাহায্যে, অস্থির পরীক্ষা বা সহকর্মী প্রায়শই বকাঝকা করলে, অনেক ভাল প্রতিশ্রুতি উল্টে যাবে। আপনার সহকর্মীরা তখন আপনাকে ঘৃণা করবে।


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

  • স্থানীয়ভাবে সংগ্রহস্থলের প্রধান আনুন
  • টান অনুরোধ (গুলি) প্রয়োগ করুন
  • নির্মাণ এবং পরীক্ষা
  • সাফল্যের ক্ষেত্রে, সংগ্রহস্থলে চাপ দিন, অন্যথায় ব্যর্থ হিসাবে চিহ্নিত করুন
  • পরবর্তী অনুরোধে সরান

উভয় চেষ্টা করার পরে, এটি কঠোরভাবে ভাল।


2
এটি প্রকৃতপক্ষে সঠিক উত্তর - সঠিক সমাধান হ'ল মাস্টার ব্রাঞ্চে পৌঁছানো থেকে খারাপ পরিবর্তনগুলি রোধ করা, তাদের অবতরণ না করা এবং তারপরে তাদের ঘূর্ণায়মান মোকাবেলা করতে হবে।
ড্যানিয়েল প্রাইডেন

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

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

সঠিক সমাধান হ'ল খারাপ পরিবর্তনগুলি যে কোনও শাখায় পৌঁছানো থেকে বিরত রাখা। ব্যর্থ প্রতিশ্রুতিগুলি কখনই সর্বজনীন করা উচিত নয়।
মাইলস রাউথ

5

এটি কি সেরা অনুশীলন বা বিকাশকারী এটি ঠিক না করা অবধি কেবল ভাঙা পড়া ছাড়াই আরও সমস্যাযুক্ত হতে পারে?

এটা সমস্যাযুক্ত। "মাস্টার হেড ভেঙে গেছে; এমন সিদ্ধান্ত নেওয়ার ক্ষেত্রে একজন ব্যক্তি সিআই সিস্টেমটি করার চেয়ে সম্পূর্ণ আলাদা।"

এখানে কয়েকটি অসুবিধা রয়েছে:

  • স্বয়ংক্রিয় বিপরীত প্রক্রিয়াতে ত্রুটিগুলি সংগ্রহস্থলটিকে স্ক্রু করবে;

  • এটি একটি একক চেঞ্জসেট (শীর্ষস্থানীয়) বিল্ডটিকে স্ক্রুযুক্ত করে (যা অবাস্তব নয়)

  • সমস্যা সমাধানের জন্য রক্ষণাবেক্ষণকারীদের আরও কাজ করতে হবে, কেবল তদন্ত ও প্রতিশ্রুতি দেওয়ার চেয়ে (তাদের বিপরীত ইতিহাসের দিকেও নজর দিতে হবে)

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

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

বৈশিষ্ট্যযুক্ত শাখাগুলিতে আপনি অন্যান্য বিকাশকারীদের থেকে বিচ্ছিন্ন হতে চান । এটি আপনাকে এটি করতে দেয়:

  • অনুসন্ধানী কোডিং সম্পাদন করুন

  • কোড বেস সঙ্গে পরীক্ষা

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

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

যদি কোনও বিকাশকারী এমন কিছু করে যা সেই শাখার জন্য বিল্ডটি ভেঙে দেয়, সিআই সিস্টেমটি কি প্রতিশ্রুতি ফিরিয়ে দেবে নাকি?

এটা করা উচিত নয়। আপনার সিআই শাখায় স্থিতিশীল কোড করা কমিটরের একটি দায়িত্ব, কোনও স্বয়ংক্রিয় সিস্টেম নয়।


2

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

এটি @ ব্রায়ান-ভ্যানডেনবার্গ দ্বারা বর্ণিত একই জাতীয় পরিবেশ

আপনার শাখাটিকে ভাল আকারে রাখার পাশাপাশি আপনি একটি কোড পর্যালোচনা পদক্ষেপ যুক্ত করুন যা আপনার সফ্টওয়্যার সম্পর্কে কোডের মান এবং জ্ঞান ভাগ করে নেওয়ার উন্নতি করে।

[1] জেনকিন্স https://jenkins-ci.org/

[2] জেরিট https://www.gerritcodereview.com/


1

সিআই-এর কখনই রেপোর প্রতিশ্রুতিবদ্ধ ইতিহাস পরিবর্তন করা উচিত নয়।

এখানে সঠিক সমাধান হ'ল মাস্টার শাখায় কোনও পরীক্ষা-নিরীক্ষা যুক্ত করার জন্য যদি তাদের পরীক্ষা এবং যাচাই না করা হয় for

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

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


1
এটি কোনওভাবেই প্রশ্নের উত্তর দেয় না। যদি বিল্ডটি কোনও বৈশিষ্ট্য শাখায় ব্যর্থ হয়, তবে সিআই কি প্রতিশ্রুতি ফিরিয়ে দেবে?
কার্লোস ক্যাম্প্ডারেস

কী যদি বিল্ডটি বৈশিষ্ট্য শাখায় সফল হয় তবে একত্রিত হওয়ার পরে ব্যর্থ হয় ?
ম্যাথিউ এম।

@MatthieuM। মার্জ করা একটি প্রতিশ্রুতিবদ্ধ, সিআই পদক্ষেপ যে একীভূত করা বিল্ডটি ফেরত দিতে পারে?
কার্লোস ক্যাম্পার্ডার

@ কার্লোস ক্যাম্প্ডারেস: আমার ব্যক্তিগতভাবে এমন কোনও সেটআপ হবে না যা কমিটগুলি ফিরিয়ে দেওয়ার চেষ্টা করে; অনেক বেশি জটিল
ম্যাথিউ এম।

আমি মন্তব্যগুলিতে সম্বোধন করেছি।
দেনিথ

1

আমরা আমাদের বিল্ড সার্ভারের জন্য জেনকিন্স ব্যবহার করি এবং কমিটস ঠেকানোর জন্য গেটকিপার মডেলটি ব্যবহার করি - যেখানে জেনকিনস এবং কমিট ট্রিগারগুলির সংমিশ্রণ (যা নিশ্চিত করে যে পিয়ার রিভিউয়াররা তাদের কাজটি করেছে) দারোয়ান।

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

এখন পর্যন্ত আলোচিত সমস্ত সমস্যা না থাকলে এটি অনেকগুলি এড়িয়ে চলে:

  • ইতিহাস পরিবর্তন
  • ইতিহাসটি সঠিক হয়ে উঠছে যদি আপনি সেই দেব হন যাকে ব্রেকেজটি ঠিক করতে হয়
  • অস্থিরতা (ভাঙ্গা বিল্ড আকারে) কখনও পরিচয় হয় না

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


পুনরায়: ডাউনভোটটি, আমার উত্তর সম্পর্কে আপনি যা পছন্দ করেন না সে সম্পর্কে মন্তব্য করতে আপনি কি আপত্তি করবেন?
ব্রায়ান ভ্যানডেনবার্গ

0

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

যদি সিস্টেমটি নিশ্চিতভাবে না জানে, তবে আমি অবশ্যই এটি স্বয়ংক্রিয় করতে চাই না।


0

জিজ্ঞাসা করা প্রশ্ন ত্রুটিযুক্ত। আমি যদিও এই বিবৃতি শ্রদ্ধা

"আমরা বিশ্বাস করি যে শাখাগুলির ধারণা বাস্তব সিআইয়ের বিপরীতে চলেছে, কারণ একটি শাখায় অঙ্গীকারবদ্ধ হওয়া আপনাকে অন্যান্য বিকাশকারী এবং তাদের পরিবর্তনগুলি থেকে বিচ্ছিন্ন করে দেয়"

আপনার যা করা উচিত তা হ'ল এই পদক্ষেপগুলি

  • আপনি যদি পছন্দ করেন তবে মাস্টারটি বন্ধ করুন (এটি ভাল এবং সবার থেকে পরিবর্তনগুলি টানতে থাকুন) তবে স্থানীয়ভাবে মাস্টার করার প্রতিশ্রুতি রাখবেন না
  • কেবলমাত্র আপনি নিজের পরিবর্তনকে মাস্টার হিসাবে প্রতিপন্ন করতে যাচ্ছেন, সাবমিট_এক্সএক্সএক্সএক্সএক্সএক্সএক্স দিয়ে একটি শাখা তৈরি করুন
  • আপনার অটোমেটেড বিল্ডটি সমস্ত সাবমিট_এক্সএক্সএক্স শাখা বিল্ড আপ করুন
  • বিকল্প 1: বিরতি বিল্ড করুন, বা বিরতি বিরতি ... পরিবর্তন প্রত্যাখ্যান করা হয়েছে এবং এটি কখনই মাস্টার অবতরণ করে না
  • বিকল্প 2: বিল্ড ওয়ার্কস, জেনকিন্স মাস্টারকে ধাক্কা দেয় এবং এটি আপডেট করে

তারপরে, আমরা যা করি তা হ'ল গিট কমিট হুক প্রত্যেককে সত্যিকার অর্থে প্রতিশ্রুতিবদ্ধ হওয়া থেকে বিরত রাখতে। এটি দুর্দান্ত কাজ করে .... কোনও ভাঙা বিল্ড কখনও তৈরি হয় না এবং হয় না কোনও মাস্টারের কাছ থেকে প্রতিশ্রুতি দেয়।

পরে, ডিন

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