CI/CD
در مهندسی نرمافزار بهطور کلی به مجموعه اعمال یکپارچهسازی مداوم و تحویل پیوسته یا استقرار پیوسته، CICD یا CI/CD میگویند.[۱][۲][۳]
CI/CD وادار میکند که فرایندهای ساخت، تست و استقرار برنامهها به صورت خودکار انجام شوند. بدین وسیله به نحوی پلی بین فعالیتهای تیمهای «توسعهٔ نرمافزار DEVelopment» و «عملیات فناوری اطلاعات OPerationS» ایجاد میکند. فعالیتهای دواپس شامل توسعه پیوسته، آزمون پیوسته، یکپارچهسازی مداوم، استقرار پیوسته و نظارت مداوم بر نرمافزار در طول فرایند توسعه میباشد. 'اقدامات CI/CD زیربنای فعالیتهای دواپس را تشکیل میدهد.
CI/CD یکی از روشهای ایدهآل (به انگلیسی: best practice) برای تیمهای دواپس است. علاوه بر این، جزئی از متدولوژیهای توسعهی نرمافزاری چابک نیز به شمار میآید. با استفاده از CI/CD تیم توسعهی نرمافزار، فارغ از دغدغهی مسائل استقرار، میتواند به نیازمندیهای جلسات، کیفیت کد و امنیت رسیدگی کند.[۴]
استقرار پیوسته
[ویرایش]استقرار پیوسته (به انگلیسی: Continuous deployment، اختصار: CD) رویکردی در مهندسی نرمافزار است که ویژگیها و قابلیتهای نرمافزاری به صورت پیاپی از طریق استقرار خودکار تحویل میشوند.[۵][۶][۷]
یکپارچه سازی مداوم
[ویرایش]یکپارچهسازی مداوم یا ادغام مداوم (به انگلیسی: Continuous Integration، اختصار: CI) در برنامهنویسی به مجموعهای از روشها میگویند که باعث حفظ انسجام کد میشود و از بههمریختگی کد جلوگیری میکند. این روشها مبتنی بر ساختن مداوم پروژه پس از هر تغییر در کد توسط برنامهنویسان و اجرای تست کیسهای برنامه است. به عنوان مثال هر زمان که یک کامیت توسط توسعهدهنده بر روی مخزن پروژه پوش شود همهٔ تستها اجرا میشود تا بتوان اطمینان حاصل نمود که همهٔ قسمتهای پیشین کد و قسمتهای تازهنوشتهشده با یکدیگر سازگاری دارد و درست کار میکند.[۸]
تحویل پیوسته
[ویرایش]تحویل پیوسته یا (به انگلیسی: Continuous Delivery، اختصار: 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) اشاره داشته باشد.
منابع
[ویرایش]- ↑ Irani, Zubin (2018-03-28). "5 common pitfalls of CICD -- and how to avoid them". InfoWorld (به انگلیسی). Retrieved 2017-12-21.
- ↑ Heller, Martin (2015-07-20). "Continuous integration is not always the right answer. Here's why". TechBeacon. Retrieved 2017-12-21.
- ↑ Atlassian (2017-04-14). "Continuous integration vs. continuous delivery vs. continuous deployment". Atlassian. Retrieved 2019-04-04.
- ↑ ۴٫۰ ۴٫۱ Sacolick, Isaac (2020-01-17). "What is CI/CD? Continuous integration and continuous delivery explained". InfoWorld (به انگلیسی). Retrieved 2021-02-05.
- ↑ Shahin, Mojtaba; Ali Babara, Muhammad; Zhu, Liming (2017). "Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices". IEEE Access. 5: 3909–3943. doi:10.1109/ACCESS.2017.2685629.
- ↑ Holmstrom Olsson, Helena; Alahyari, Hiva; Bosch, Jan (2012). "Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software". Proceedings of the 2012 38th Euromicro Conference on Software Engineering and Advanced Applications. IEEE Computer Society: 392–399. doi:10.1109/SEAA.2012.54. ISBN 978-0-7695-4790-9.
- ↑ Claps, Gerry Gerard; Berntsson Svenssonb, Richard; Aurum, Aybüke (2014). "On the journey to continuous deployment: Technical and social challenges along the way". Information and Software Technology. 57: 21–31.
- ↑ Duvall, Paul M. (2007). Continuous Integration. Improving Software Quality and Reducing Risk. Addison-Wesley. ISBN 0-321-33638-0.
- ↑ امید شریعتی. «Continuous Delivery چیست». hidevops.
پیوند به بیرون
[ویرایش]- What is CI/CD - all you need to know by Maciej Manturewicz
- Fowler, Martin. "Continuous integration" (article) (introduction)
{{cite web}}
: نگهداری CS1: پست اسکریپت (link). - "Portland Pattern Repository" (wiki) (a collegial discussion). C2
{{cite journal}}
: Cite journal requires|journal=
(help);|contribution=
ignored (help)نگهداری CS1: پست اسکریپت (link). - "Portland Pattern Repository" (wiki). C2
{{cite journal}}
: Cite journal requires|journal=
(help);|contribution=
ignored (help)نگهداری CS1: پست اسکریپت (link). - "Continuous Integration Server Feature Matrix (a guide to tools)". Thought works. Archived from the original on 4 May 2015. Retrieved 28 August 2014
{{cite journal}}
: Cite journal requires|journal=
(help)نگهداری CS1: پست اسکریپت (link). - Richardson, Jared. (introduction) http://www.methodsandtools.com/archive/archive.php?id=42
{{cite web}}
:|contribution=
ignored (help); Missing or empty|title=
(help)نگهداری CS1: پست اسکریپت (link). - Flowers, Jay. "A Recipe for Build Maintainability and Reusability". Archived from the original on 25 June 2020. Retrieved 5 February 2021
{{cite web}}
: نگهداری CS1: پست اسکریپت (link). - Duvall, Paul. "Developer works"
{{cite web}}
:|contribution=
ignored (help)نگهداری CS1: پست اسکریپت (link). - "Rules". Extreme programming
{{cite journal}}
: Cite journal requires|journal=
(help);|contribution=
ignored (help)نگهداری CS1: پست اسکریپت (link). - "Version lifecycle". MediaWiki
{{cite journal}}
: Cite journal requires|journal=
(help)نگهداری CS1: پست اسکریپت (link).