CI/CD

در مهندسی نرم‌افزار به‌طور کلی به مجموعه اعمال یکپارچه‌سازی مداوم و تحویل پیوسته یا استقرار پیوسته، CICD یا CI/CD می‌گویند.

CI/CD وادار می‌کند که فرایندهای ساخت، تست و استقرار برنامه‌ها به صورت خودکار انجام شوند. بدین وسیله به نحوی پلی بین فعالیت‌های تیم‌های «توسعهٔ نرم‌افزار DEVelopment» و «عملیات فناوری اطلاعات OPerationS» ایجاد می‌کند. فعالیت‌های دواپس شامل توسعه پیوسته، آزمون پیوسته، یکپارچه‌سازی مداوم، استقرار پیوسته و نظارت مداوم بر نرم‌افزار در طول فرایند توسعه می‌باشد. اقدامات CI/CD زیربنای فعالیت‌های دواپس را تشکیل می‌دهد.CI/CD یکی از روش‌های ایده‌آل  برای تیم‌های دواپس است. علاوه بر این، جزئی از متدولوژی‌های توسعه‌ی نرم‌افزاری چابک نیز به شمار می‌آید. با استفاده از CI/CD تیم توسعه‌ی نرم‌افزار، فارغ از دغدغه‌ی مسائل استقرار، می‌تواند به نیازمندی‌های جلسات، کیفیت کد و امنیت رسیدگی کند.

 استقرار پیوسته 
استقرار پیوسته  رویکردی در مهندسی نرم‌افزار است که ویژگی‌ها و قابلیت‌های نرم‌افزاری به صورت پیاپی از طریق استقرار خودکار تحویل می‌شوند.

 یکپارچه سازی مداوم 

یکپارچه‌سازی مداوم یا ادغام مداوم  در برنامه‌نویسی به مجموعه‌ای از روش‌ها می‌گویند که باعث حفظ انسجام کد می‌شود و از به‌هم‌ریختگی کد جلوگیری می‌کند. این روش‌ها مبتنی بر ساختن مداوم پروژه پس از هر تغییر در کد توسط برنامه‌نویسان و اجرای تست کیس‌های برنامه است. به عنوان مثال هر زمان که یک کامیت توسط توسعه‌دهنده بر روی مخزن پروژه پوش شود همهٔ تست‌ها اجرا می‌شود تا بتوان اطمینان حاصل نمود که همهٔ قسمت‌های پیشین کد و قسمت‌های تازه‌نوشته‌شده با یک‌دیگر سازگاری دارد و درست کار می‌کند.

 تحویل پیوسته 
تحویل پیوسته یا  رویکردی در مهندسی نرم‌افزار است که به تیم‌ها این قابلیت را می‌دهد که نرم‌افزار تولید شده را به روشی سریع و مطمئن برای انتشار و تحویل آماده کنند. این فرایند از لحظه اضافه‌شدن یا تغییر کد در source control شروع می‌شود و شامل ساخت (build)، تست، پیکربندی و انتشار در محیط‌های مختلف تست و محیط عملیات می‌شود. این مفهوم در فارسی به «تحویل مداوم» یا «تحویل مستمر» ترجمه شده‌است.

به عبارت دیگر: تحویل مستمر توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روشی سریع و مطمئن و به‌طور کاملاً پایدار می‌باشد. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم‌افزار، زیرساخت و پلتفرم، افزودن ویژگی‌های جدید، رفع باگ و خطاها می‌شود.

به وسیله محیط‌های تست مختلف، می‌توان یک Deployment pipeline ایجاد کرد تا بتوان یک زیرساخت جدید را به‌طور اتوماتیک ایجاد کرد و نرم‌افزار را روی آن منتشر کرد. منظور از زیرساخت سرور، سیستم عامل، سرویس دهندهٔ وب، virtualization، شبکه، پیکربندی و تنظیمات آن‌ها می‌باشد. به کمک این محیط‌های متوالی می‌توان فعالیت‌های طولانی یکپارچه‌سازی، تست عملکرد و تست‌های پذیرش نهایی را به تدریج انجام داد. فرایند تحویل پیوسته در Deployment pipeline با یکپارچه‌سازی مداوم شروع می‌شود و با انتشار و پایان تست در هر محیط، انتشار و تست در مرحله بعدی شروع می‌شود. مجموع این کارها به صورت حلقه‌های یک زنجیر در پشت سر هم قرار گرفته و فرایند تحویل پیوسته را تشکیل می‌دهند.

 ابزارهای پرکاربرد 
ابزارهای CI/CD'' به تیم‌ها این امکان را می‌دهند که استقرار، توسعه و تست‌کردنشان را به صورت خودکار انجام بدهند. بعضی از ابزارها به صورت خاص‌منظوره برای بخش CI، بعضی برای CD و سایرین برای تست خودکار یا استفاده‌های دیگه توسعه یافته‌اند.

یکی از بهترین ابزارهای متن‌باز در زمینه‌ی CI/CD سرور خودکارسازی Jenkins است. یکی دیگر از فریم‌وورک‌های CI/CD برای بسترهای کوبرنتیز نیز پایپ‌لاین‌های Tekton هستند. علاوه بر این‌ها، چند ابزار متن‌باز دیگر عبارتند از: Spinnaker، GoCD، Concourse و Screwdriver.

 در زمینه‌های دیگر 
در زمینه ارتباطات شرکتی، CI/CD''' می‌تواند به فرایند کلی هویت سازمانی (Corporate Identity) و طراحی سازمان (Corporate Design) اشاره داشته باشد.

منابع

پیوند به بیرون 
 What is CI/CD - all you need to know by Maciej Manturewicz
 .
 .
 .
 .
 .
 .
 .
 .
 .

برنامه‌سازی مفرط
ترویج و ارتباطات بازاریابی
توسعه نرم‌افزار
توسعه نرم‌افزاری چابک
مدیریت پروژه نرم‌افزاری
مهندسی نرم‌افزار
یکپارچه‌سازی مداوم