دانستنی‌ها

یکپارچه سازی و ارزیابی کیفی مستمر محصول با «Jenkins»

‫ابزارهای همچون Jenkins به تیمهای نرم افزاری کمک می کند مراحل متعدد ساخت و ارزیابی کیفیت نرم افزار را با هر تغییر در متن برنامه اجرا کند.

‫اطمینان از کیفیت نرم افزار مستلزم طی مراحل مختلف تست و ارزیابی است. متدلوژیهای نرم افزاری رهنمودهای متفاوتی برای تولید محصولات با کیفیت ارائه می کنند. متدلوژی XP به عنوان پایه متدلوژیهای چابک و محبوب امروزی 5 ارزش محوری «سادگی»، «ارتباط»، «بازخورد»، «شجاعت» و «احترام» را مطرح می کند. بازخورد (Feedback) مهمترین رکن یک سیستم بالنده است. چابکی میوه اقدامات شجاعانه و جسورانه است. شجاعت و جسارت وقتی بجاست که مکانیزم بازخورد کارآمدی اشتباهات را به سرعت نمایان کند. در تعیین گامهای کلان یا جزئی در فرایند توسعه باید سعی کنیم مسیرهایی طراحی کنیم که بازخورد حداکثری در زمان حداقلی حاصل شود.
‫خودکارسازی مکانیزم ساخت (Build Automation)، تولید اسکریپتهای تست واحد (Unit Testing) و تست یکپارچه سازی (Integration Test) می تواند به افزایش بازخورد کمک کند. در عین حال اجرای کامل این مراحل زمانبر خواهد بود. خوشبختانه امروزه ابزارهای نوین Continuous Integration یا CI به ما درمدیریت اجرای این روند کمک می کنند.


‫فرض کنید در یک تیم چند نفره روی پروژه ای کار می کنید. اعضای تیم کدهای خود را روی یک سیستم مدیریت نسخ (Revision Control) مانند SVN  یا Git به اشتراک می گذارند. محصول نهایی از چند ماژول یا زیرسیستم تشکیل شده که برخی از آنها به برخی دیگر وابسته هستند. به این معنی که مثلاً در صورت تغییر در ماژولهای اصلی ممکن است ماژولهای وابسته، دیگر کامپایل نشوند یا عملکردشان خراب شود.

‫با استفاده از ابزارهای Continuous Integration می‌توانیم کاری کنیم که هر وقت یکی از برنامه نویسان تیم کد یکی از ماژولها را تغییر و آن را روی SVN یا Git قرار داد، کد جدید آن ماژول به طور کامل روی سرور CI دریافت و کامپایل شود، تستهای واحد روی آن اجرا گردد، با استفاده از ابزاری مثل SonarQube متن برنامه تحلیل و ارزیابی شود. اگر مشکلی در روند به وجود نیامد jar یا war مورد نظر ساخته شود و در محل مورد نظر (مثلا maven repository) قرار گیرد. اما اگر در هر یک از مراحل مشکلی پیش بیاید خطای به وجود آمده و آخرین تغییراتی که موجب بروز خطا شده اند به اعضای تیم ایمیل شود. این یعنی بازخورد سریع و کامل.

‫اما کار به اینجا ختم نمی شود. ابزار CI بعد از ساخت موفق ماژولی که تغییر کرده است به سراغ ماژولهای وابسته به آن می‌رود و روند مشابهی را روی آنها اجرا می کند تا مطمئن شود که آثار جانبی تغییر در ماژول پایه موجب خرابی در ماژولهای وابسته نشده است. همچنین می توانیم بعد از پایان موفقیت آمیز مراحل، نسخه جدید محصول را در یک محیط تستی (که بهتر است کاملاً مشابه محیط اصلی باشد) نصب کنیم تا نسخه آخر همواره در دسترس و قابل مشاهده باشد. در دسترس بودن دایمی آخرین نسخه محصول موجب بهبود «ارتباط» و «بازخورد» می شود.

‫یکی از ابزارهای CI متن باز و مشهور Jenkins نام دارد که تعداد بی شماری از پروژه های نرم افزاری جاوایی و غیر جاوایی از آن استفاده می‌کنند. شاید برای شما جالب باشد که ساخت محصولات بزرگی مثل apache و debian با استفاده از Jenkins صورت می گیرد. این ابزار پلاگینهای بسیاری برای ساخت، تست، تحلیل کد، نصب و … دارد و به راحتی می توانید ابزارهای مختلف را با آن هماهنگ کنید.

‫راه اندازی Jenkins مخصوصاً برای پروژه های مبتنی بر maven آسان است.  در حالیکه شرکتهای بزرگ بین المللی مفاهیم و ابزارهای Continuous Delivery را دنبال می کنند نداشتن ابزار Continuous Integration عقب ماندگی بزرگی برای شرکتهای معتبر ایرانی محسوب می شود.

نوشته های مشابه

‫3 دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا