CI/CD

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

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

''CI/CD'' یکی از روش‌های ایده‌آل  برای تیم‌های دواپس است. علاوه بر این، جزئی از متدولوژی‌های توسعه‌ی نرم‌افزاری [[توسعه نرم‌افزاری چابک|چابک]] نیز به شمار می‌آید. با استفاده از ''CI/CD'' تیم توسعه‌ی نرم‌افزار، فارغ از دغدغه‌ی مسائل استقرار، می‌تواند به نیازمندی‌های جلسات، کیفیت کد و امنیت رسیدگی کند.
== استقرار پیوسته ==
**استقرار پیوسته**  [[فرایند توسعه نرم‌افزار|رویکردی در مهندسی نرم‌افزار]] است که ویژگی‌ها و قابلیت‌های نرم‌افزاری به صورت پیاپی از طریق [[استقرار نرم‌افزار|استقرار]] خودکار تحویل می‌شوند.

== یکپارچه سازی مداوم ==
[[پرونده:Continuous Delivery process diagram.svg|بندانگشتی|یکپارچه سازی مداوم]]
**یکپارچه‌سازی مداوم** یا **ادغام مداوم**  در [[برنامه‌نویسی]] به مجموعه‌ای از روش‌ها می‌گویند که باعث حفظ انسجام کد می‌شود و از به‌هم‌ریختگی کد جلوگیری می‌کند. این روش‌ها مبتنی بر ساختن مداوم پروژه پس از هر تغییر در کد توسط برنامه‌نویسان و اجرای [[تست کیس]]‌های برنامه است. به عنوان مثال هر زمان که یک کامیت توسط توسعه‌دهنده بر روی مخزن پروژه پوش شود همهٔ تست‌ها اجرا می‌شود تا بتوان اطمینان حاصل نمود که همهٔ قسمت‌های پیشین کد و قسمت‌های تازه‌نوشته‌شده با یک‌دیگر سازگاری دارد و درست کار می‌کند.

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

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

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

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

یکی از بهترین ابزارهای [[متن‌باز]] در زمینه‌ی CI/CD سرور خودکارسازی [https://jenkins.io Jenkins] است. یکی دیگر از فریم‌وورک‌های CI/CD برای بسترهای [[کوبرنتیز]] نیز پایپ‌لاین‌های [https://tekton.dev/ Tekton] هستند. علاوه بر این‌ها، چند ابزار متن‌باز دیگر عبارتند از: [https://spinnaker.io/ Spinnaker]، [https://www.gocd.org/ GoCD]، [https://concourse-ci.org/ Concourse] و [https://screwdriver.cd/ Screwdriver].

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

## منابع

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

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