

Continuous Integration چیست؟
ادغام مداوم (Continuous Integration) که به اختصار CI نامیده میشود، فرایندی است که در آن توسعهدهندگان میتوانند به طور مستمر کارهای خود را با هم یکپارچه کنند. هر بار که توسعهدهندهای کدی را به سورس کنترل اضافه میکند، توسط یک بیلد اتوماتیک عدم تاثیر منفی تغییرات کدها در پروژهها (که برخی به هم وابستگی دارند) بررسی میشود. با اجرای این فرآیند که شامل کامپایل و بیلد کردن پروژهها و اجرای تستهای واحد (unit test) است، مشکلات یکپارچهسازی به شدت کم میشود و تیمها میتوانند به صورت منسجمتری به توسعه نرمافزار بپردازند.
منظور از Continuous Integration چیست؟
به فرایند ادغام یکپارچه کدها و بیلد کردن پروژهها و اجرای unit test ها به صورت اتوماتیک، Continuous Integration یا CI میگویند. با اجرای CI، با اعمال یک تغییر در سورس کد و اضافه شدن آن به source control، یک بیلد اتوماتیک به راه میافتد تا به وسیله آن، آخرین نسخه کدها از مخزن کد استخراج و بیلد شود و unit test های آن اجرا شود. در واقع با این کار یک ارزیابی کلی از سلامت کدها انجام میشود. این کار معمولا چندین بار در یک روز انجام میشود.
در نبود Continuous Integration چه اتفاقی میافتد؟
اگر ادغام تغییراتی که توسعهدهندگان تیم در یک سورس مشترک اعمال کردهاند، چند روز یا چند هفته به طول بکشد، منجر بهconflict های زیادی خواهد شد. در چنین شرایطی برطرف کردن خطا بسیار دشوار خواهد بود. در این مواقع، واگرایی بین کدها بسیار زیاد میشود و برای تصحیح خطاها نیاز به درگیر شدن چند نفر از توسعهدهندگان است که نتیجه آن، صرف زمان و هزینه زیاد خواهد بود.
Continuous Integration چه کمکی به ما میکند؟
با اجرای CI، توسعهدهندگان در فواصل کوتاه و با هر بار check-in (یا commit) در source control میتوانند تغییرات خود را با سایر تغییرات ادغام کنند و یک ارزیابی سریع از آن داشته باشند. با کمک CI میتوان شاخه اصلی کد را تمیز و پایدار نگه داشت. در چنین شرایطی توسعهدهندگان ترغیب میشوند تغییرات خود را به صورت قطعههای کوچکتر و با تکرار بیشتر در Source Control اعمال کنند. تیمها از بیلدهای اتوماتیک استفاده میکنند تا یابند که باگها خیلی زود و در چرخه توسعه شناسایی میشوند. این امر باعث میشود برای رفع آنها هزینهی کمتری پرداخته شود. اجرای تستها به صورت اتوماتیک در هر بار تغییر در source control منجر به کیفیت پایدار در آن خواهد شد.
تیمها به وسیله version control های جدید مانندGIT، میتوانند برای هر feature، یک شاخه کوتاهمدت از کد در سیستم خودشان بسازند و بعد از تایید یک pull request، تغییراتشان با شاخه اصلی کدها ادغام شود و سپس آن شاخه را حذف کنند. این کار میتواند بارها تکرار شود. تیمها میتوانند برای branch ها سیاستگذاری کنند تا همیشه مطمئن باشند که معیارهای کیفی لازم در آن رعایت شده است.
امروزه CI به عنوان یک Best Practice در توسعه نرمافزار شناخته میشود، تا جایی که یک جزء جدایی ناپذیر از روشهای چابک تولید نرمافزار شده است. همچنین یکی از ملزومات دواپس و Continuous Delivery نیز هست.
چرا لازم است تکنیک Continuous Integration را فرا بگیریم؟
شاید برای شما هم سوال باشد که چرا نیاز داریم CI را یاد بگیریم. در ادامه به 10 دلیل اشاره میکنیم که میتوانند پاسخ مناسبی برای سوال شما باشند:
- در بازههای زمانی کوتاه و چند بار در روز قادر خواهید بود که تغییرات اعمالشده توسط توسعهدهندگان که با هم ادغام شده است را دیده و یک ارزیابی سریع از آن داشته باشید.
- با کمک CI همیشه میتوان شاخه اصلی کد را تمیز و پایدار نگه داشت.
- توسعهدهندگان ترغیب میشوند که تغییرات خود را در قطعات کوچکتر و در دفعات بیشتری در سورس کنترل اعمال کنند.
- خطاها خیلی زودتر و در مراحل ابتدایی چرخه حیات نرمافزار شناسایی میشوند.
- شناسایی زودتر خطاها باعث می شود هزینه رفع آنها بسیار اندک باشد.
- باعث افزایش شفافیت و ارتباط بهتر با ذینفعان میشود.
- از آشوب و به هم ریختگی در روز انتشار جلوگیری میکند.
- کمک میکند محصول سریعتر و باکیفیت بهتر به دست مشتری نهایی برسد.
- اجرای خودکار تستها و بررسی نتایج آنها منجر به کیفیت پایدارتری خواهد شد و به پروسه تضمین کیفیت کمک میکند.
- پیش نیاز Continuous Delivery است.
جمعبندی:
در این مقاله سعی کردیم تا فرایند Continuous Integration را معرفی کرده و تعدادی از مزایای استفاده از آن را نیز مطرح کنیم. وقتی تیمها و افراد زیادی روی یک پروژه کار میکنند بحث CI اهمیت زیادی پیدا میکند. بدیهی است که کیفیت بهتر و کم شدن هزینهها در هر پروژهای میتواند یک دغدغه مهم محسوب شود. به یاد داشته باشیم که با استفاده از فرایندها، رویکردها و ارزیابی مناسب است که میتوانیم به عنوان یک توسعه دهنده عملکرد بهتری داشته باشیم.