وبلاگ شخصی حامد شیربندی

حامد شیربندی

توسعه دهنده نرم افزار

Continuous Integration - بخش اول : مفهوم

Continuous Integration یا CI فرایند خودکار سازی Build و تست کدهای پروژه است. در نظر بگیرید که یک تیم چند نفره در حال توسعه ی یک پروژه هستند. هر توسعه دهنده یک نسخه از پروژه را روی لوکال خود دارد و مدام در حال ایجاد تغییرات و افزودن ویژگی به آن است. در این حالت نیاز است تا کل تغییرات توسط تمام توسعه دهنده ها به برنچ master اعمال شود تا یک نسخه ی یکپارچه از کد روی سورس کنترل ایجاد شود اما انتظار چندورزه برای ارسال تغییرات تمام توسعه دهندگان می تواند باعث ایجاد conflict های متعدد شده و نیز رفع باگ های پروژه را بسیار سخت کند.

برای رفع این مشکل، مفهومی به نام CI به وجود آمد که طبق آن، کل اعضای تیم توسعه باید بعد از افزودن هر ویژگی یا تغییر کوچک، آن را روی سورس اصلی ارسال کنند و سپس با استفاده از ابزارهایی یک فرآیند شامل چندین فاز و چندین تسک تعریف میشود که کار خودکار سازی Build کردن سورس و اجرای تست ها را انجام میدهد. به این صورت همیشه یک سورس یکپارچه خواهیم داشت که از بیلد شدن آن مطمئن بوده و همچنین با پاس شدن تست ها، مطمئن هستیم که باگی در نسخه ی جاری وجود نداشته است.
با پیاده سازی CI هربار که تغییراتی را checkIn میکنیم در پشت صحنه به ازای آن ChangeSet، یک نمونه از فرآیند بیلد تعریف شده، اجرا خواهد شد و در صورتی که در بیلد یا در اجرای تست ها، عملیات شکست بخورد، فرآیند fail شده و به راحتی میتوان مشکلات و خطاهای مربوطه را پیگیری کرد. همچنین میتوان تاریخچه ای از این فرآیندهای انجام شده را مشاهده کرده و درصد شکست ها و موفقیت های آن را دید.



با پیاده سازی CI میتوانیم مطمئن شویم که همیشه میتوانیم یک نسخه ی یکپارچه و تست شده از سورس را در اختیار داشته باشیم و از آن برای تحویل به مشتری و پیاده سازی فرآیند CD یا Continuous Delivery استفاده کنیم.

در بخش دوم این مقاله به آموزش نحوه ی پیاده سازی CI با استفاده از TFS خواهیم پرداخت.





نوشته شده توسط حامد شیربندی

اگر در مورد این نوشته سوال یا ابهامی وجود دارد میتوانید به ایمیل من ارسال کنید. البته در این مورد باید کمی صبور باشید. در آینده بخش نظرات اضافه خواهد شد.