CI به عنوان یکی از Practice های اصلی مطرح در DevOps و Cloud Native است و تلاش دارد تا با افزایش شفافیت و بررسی هر چه زودتر تغییرات اعمال شده در سورس کد و یا تنظیمات، نتیجه اعمال آنها را در محیطی ایزوله گزارش می نماید، وظیفه CI نمایش مشکلات بروز نموده در حداقل زمان است تا قبل از اینکه تغییرات باعث بروز مشکل به فراموشی سپرده شوند مشکل مشخص شده و جهت رفع آن برنامه ریزی های لازم صورت گیرد.
ابزارهایی مثل Jenkins و Azure Pipeline و Gitlab در این زمینه برای شما مفید خواهند بود. دور های آموزشی مرتبط با هر یک از ابزارهای ذکر شده در بخش های آموزش Jenkins و آموزش Azure DevOps و آموزش Gitlab قابل مشاهده و خریداری هستند.
در نتیجه در CI موارد زیر جهت اندازه گیری دارای اهمیت هستند
- در چه بازه های زمانی/پس از چه رویدادهایی فرآیند CI باید شروع گردد، با توجه به منابع و محدودیت های موجود در سازمان ممکن است پاسخ شما متفاوت باشد
- چه فاکتورهایی در اجرای CI برای تیم مهم است
- پالیسی برنچ های سورس کد بر چه اساسی است و به فراخور هر برنچ چه سطحی از CI باید اجرا گردد، به عنوان مثال هر تغییر اعمال شده بر روی برنچ Release-V2.3.1 باعث اجرای CI با حداکثر متریک های قابل بررسی می گردد تا پابلیش موفقیت آمیز را تضمین نماید
- چه روشی جهت بررسی کیفیت کدها مورد استفاده قرار می گیرد
- چه روشی جهت بررسی موارد امنیتی مورد استفاده قرار می گیرد
- نقطه اتکای CI تست های خودکار هستند، وجود تست های خودکار از هر نوعی می تواند به طرز چشمگیری باعث افزایش کیفیت CI گردد
برخی از مزایا CI به شرح زیر هستند
- Enable Scaling، مهم نیست تعداد توسعه دهندگان شما از ۱۰ به ۳۰ برسد، زیرساخت ایجاد شده برای CI یکسان خواهد بود
- بهبود Feedback loop کارهای توسعه داده شده، دریافت بازخود تغییرات اعمال شده در محصول در کوتاه ترین زمان مثل تست هایی که fail شده اند و یا کیفیت کد که بهتر و یا بدتر شده است و یا مشکلات امنیتی که در کد تازه نوشته شده وجود دارد و غیره
- بهبود ارتباطات، اتصال Ci به فرایند Pull Request امکان ارتباط و به اشتراک گذاری تغییرات با سایر همکاران و بررسی هرچه سریعتر آنها توسط یک سیستم بی طرف و بدون نیاز به سیستم توسعه دهنده را فراهم می نماید
برخی از معایب CI به شرح زیر هستند
- نصب و قبول CI، سخت ترین بخش راه اندازی CI و قبول فرهنگ مرتبط با آن در سازمان است، ایجاد ساختار برنچ استاندارد، تنظیم خودکار CI بر اساس الگوی برنچها، نصب و تنظیم ابزارهای لازم
- Learning curve، با توجه به استفاده از فرایندها و تکنولوژی های جدید نفرات تیم نیازمند آموزش بوده و سازمان نیز نیازمند تعیین رویکردی مشخص در این زمینه است.