"স্বয়ংক্রিয় বিল্ড" এর অর্থ কী?


15

আমি একটি প্রকল্পে ধারাবাহিক ইন্টিগ্রেশন যুক্ত করার চেষ্টা করছি।

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

বিভ্রান্তির নির্দিষ্ট বিষয়: "স্বয়ংক্রিয় বিল্ড" এর প্রসঙ্গে কী বোঝায় :

  • পাইথন বা পার্লের মতো ব্যাখ্যামূলক ভাষা ব্যবহার করে এমন কোনও প্রকল্প?
  • একটি শেষ ব্যবহারকারীর মেশিনে উত্স থেকে বিল্ডিং?
  • এমন একটি অ্যাপ্লিকেশন যার নির্ভরতা রয়েছে যা কেবল প্রাক-সংকলন এবং বিতরণ করা যায় না, যেমন ব্যবহারকারীর মেশিনে কোনও আরডিবিএমএস স্থানীয় একটি ডাটাবেস?

2
আমি উভয়ের সাথে ট্যাগ করেছি buildsএবং buildকারণ কোনটি ব্যবহার করব তা আমি জানতাম না।

উত্তর:


14

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

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

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

রূপান্তর পদক্ষেপ:

  • সংকলন
  • সংযোগস্থাপন
  • প্যাকেজিং
  • বিস্তৃতি
  • তথ্য স্থানান্তর
  • ব্যাকআপ
  • প্রজ্ঞাপন

গুণগত মান নিশ্চিতকরণের পদক্ষেপ:

  • সংকলক সতর্কতা / ত্রুটি
  • ইউনিট পরীক্ষা
  • সংহতকরণ পরীক্ষা
  • সিস্টেম পরীক্ষা
  • স্থাপনার প্রমাণীকরণ

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


21

একটি স্বয়ংক্রিয় বিল্ড হল এমন প্রক্রিয়াটির বিবরণ যা নিম্নলিখিত বুনিয়াদিগুলি আবরণ করা উচিত:

  1. উত্স নিয়ন্ত্রণ থেকে সর্বশেষতম কোডটি আনুন
  2. এক্সিকিউটেবলের মধ্যে সর্বশেষ কোডটি সংকলন করুন
  3. সংকলিত কোডের বিপরীতে পরীক্ষা চালান (ইউনিট পরীক্ষা, সিস্টেম পরীক্ষা, সংহতকরণ পরীক্ষা)
  4. মোতায়েনের জন্য একটি পরিচিত স্থানে এক্সিকিউটেবল সম্পূর্ণ স্থাপন করুন।
  5. বিল্ডের ফলাফল প্রকাশ করুন।
    5.1 সফল সংকলন, ইউনিট পরীক্ষার সাফল্য

এটি হ্যান্ডস অফ, প্রক্রিয়া যা শূন্য ম্যানুয়াল হস্তক্ষেপে চালানো উচিত।


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

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

2

আমার মনে, একটি স্বয়ংক্রিয় বিল্ড এমন কিছু

  • সময়সূচিতে বা প্রতিটি উত্স নিয়ন্ত্রণে প্রতিশ্রুতি দিয়ে স্বয়ংক্রিয়ভাবে ঘটে
  • প্রত্নতত্ত্বের একটি সেট তৈরি করে যা কেবল কোনও সার্ভারে স্থাপন করা যেতে পারে

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

আপনার যদি একটি সঙ্কলনবিহীন ভাষা থাকে তবে আপনি একটি সাইট তৈরি করতে এবং একটি একক আর্টফ্যাক্ট তৈরি করতে এটি জিপ করতে পারেন।

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

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


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

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

1
a project using an interpreted language, such as Python or Perl?

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

একটি শেষ ব্যবহারকারীর মেশিনে উত্স থেকে বিল্ডিং?

আমার কাছে এটির অর্থ হ'ল আপনি একটি একক কমান্ড সরবরাহ করতে পারেন যা শেষ-ব্যবহারকারীরা প্রোগ্রামের সর্বশেষ সংস্করণটি পেতে, এটি সংকলন করতে, কনফিগার করতে এবং প্রয়োজন অনুযায়ী মোতায়েন করতে পারে।

এমন একটি অ্যাপ্লিকেশন যার নির্ভরতা রয়েছে যা কেবল প্রাক-সংকলন এবং বিতরণ করা যায় না, যেমন ব্যবহারকারীর মেশিনে কোনও আরডিবিএমএস স্থানীয় একটি ডাটাবেস?

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


1

আপনি আপনার প্রশ্নে যা আলোচনা করছেন তা আসলে 3 টি ভিন্ন ধারণা:

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

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

এই পরিস্থিতি প্রশমিত করতে, আমরা এই ওভারহেডটি সরাতে অন্যান্য কৌশল ব্যবহার করি।

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

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


1
দুর্দান্ত পয়েন্টস ... এটি খুব খারাপ যে বেশিরভাগ লোক থ্রেডের নীচে পড়ে ভোট দেয় না।
হটশট 309

0

"অটোমেটেড বিল্ড" এর অর্থ আপনি উত্স নিয়ন্ত্রণ থেকে শিপিয়েবল প্যাকেজে কোনও (সময়সূচী) ক্রিয়া (সাধারণত শেল স্ক্রিপ্ট বা ব্যাচ ফাইল) সহ যেতে পারেন।

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

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

  • সংকলন, লিঙ্কিং
  • স্বয়ংক্রিয় পরীক্ষা চলছে tests
  • ইনস্টলার প্যাকেজ তৈরি
  • ইনস্টল করার
  • ডাটাবেস সংশোধন করা
  • ব্যাকআপ তৈরি করা (যদি আপনাকে পিছনে ফিরে আসতে হয়)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.