CI/CD چیست
فرض کنید یک برنامه نویس تغییراتی در پروژه اعمال می کند و کد را در GitHub ثبت می کند.
بلافاصله پس از Push شدن کد، یک Pipeline خودکار آغاز می شود.
این Pipeline معمولا شامل مراحل زیر است:
دریافت سورس کد
سیستم CI آخرین نسخه کد را از Repository دریافت می کند.
Build پروژه
سورس کد کامپایل می شود تا مشخص شود پروژه بدون خطا قابل اجرا است.
برای مثال:
- در .NET از dotnet build
- در Java از Maven یا Gradle
- در Node.js از npm build
استفاده می شود.
اجرای تست ها
در این مرحله انواع تست ها اجرا می شوند:
- Unit Test
- Integration Test
- API Test
- Security Test
اگر حتی یک تست شکست بخورد، Pipeline متوقف می شود.
تحلیل کیفیت کد
ابزارهایی مانند SonarQube کیفیت کد را بررسی می کنند.
برای مثال:
- آسیب پذیری های امنیتی
- تکرار کد
- پیچیدگی بیش از حد
- مشکلات نگهداری
شناسایی می شوند.
در نتیجه توسعه دهندگان خیلی زود از مشکلات احتمالی مطلع خواهند شد.
CD یا Continuous Delivery چیست؟پس از آنکه CI با موفقیت انجام شد، نوبت به CD می رسد.
CD مخفف Continuous Delivery یا Continuous Deployment است.
هر دو مفهوم به خودکارسازی فرآیند انتشار نرم افزار مربوط هستند اما تفاوت های مهمی دارند.
Continuous Delivery
در این روش نرم افزار پس از موفقیت تمامی تست ها به صورت خودکار آماده انتشار می شود.
اما انتشار نهایی نیازمند تایید انسانی است.
به عبارت دیگر:
تیم توسعه هر زمان که بخواهد می تواند تنها با یک کلیک نسخه جدید را منتشر کند.
این روش در بسیاری از سازمان های بزرگ محبوب است زیرا کنترل بیشتری روی انتشار فراهم می کند.
Continuous Deployment
در این مدل حتی مرحله تایید انسانی نیز حذف می شود.
به محض اینکه:
- Build موفق باشد
- تست ها موفق باشند
- بررسی های امنیتی تایید شوند
نسخه جدید به صورت خودکار روی محیط عملیاتی منتشر می شود.
شرکت هایی مانند نتفلیکس، آمازون و بسیاری از سرویس های SaaS از این رویکرد استفاده می کنند.
تفاوت Continuous Delivery و Continuous Deployment
بسیاری از افراد تصور می کنند این دو مفهوم یکسان هستند.
در حالی که تفاوت اصلی آن ها در مرحله آخر انتشار است.
ادامه مقاله در
https://imaninova.ir/ArticleView?what-is-ci-cd-and-how-to-automate-software-deployment