معنی CI/CD چیست؟

CI-CD

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

در حقیقت CI/CD افراد را وادار می‌کند تا مراحل ساخت، تست و استقرار برنامه‌ها را به شکل خودکار انجام دهند. با این امکان به نحوی یک پل بین فعالیت‌های تیم‌های توسعهٔ نرم‌افزار و عملیات فناوری اطلاعات و انتشار پروژه ایجاد می‌نماید.

CI یا Continuous Integration

در واقع CI مخفف Continuous Integration هست که یک عمل نرم افزاری است که توی اون همه برنامه نویس ها، تغییراتی که توی کدشون میدن رو روی یک ریپازیتوری مرکزی merge میکنن.

در CI، هر تغیر در کد، یک زنجیره build-and-test (ساخت و تست) رو برای اون پروژه ای که توش کد تغییر کرده اجرا میکنه.

CD یا Continuous Delivery

همچنین CD مخفف Continuous Delivery هست که عمل خودکار سازی انتشار یک پروژه نرم افزاری رو به چرخه فرایند اضافه میکنه.

چرخه خودکار CI/CD

چیزی که مهمه اینه که تمام این فرایند باید کاملا خودکار باشه؛ و هر نسخه جدیدی که آماده میشه و این چرخه رو شروع به اجرا میکنه، یک نسخه کاملی از log ها (گزارش کامل) ساخته بشه و در اختیار تیم فنی قرار بگیره که همه متوجه بشن اون features (قابلیت یا قابلیت های) جدید، به چه صورتی و با چه بازخوردی به پروژه اضافه شدن.

اکثر پروژه های نرم افزاری، برای انتشار یک نسخه جدید، باید این مراحل رو طی کنن:

– Source

در بیشتر مواقع، شروع pipeline زمانی اتفاق میوفته که یک push به ریپازیتوری انجام میشه. به عبارت بهتر، وقتی به سورس پروژه تزریق میشه فرایند CI/CD شروع به کار می کنه و یا در یک ساعت خاصی از روز، وب سایتمون رو بروزرسانی بکنیم. که در اون صورت توی تنظیمات ست میکنیم که در زمان مشخص عملیات CI/CD شروع به کار کنه.

– Build

در این مرحله ما کدی که به سورس پروژه اضافه شده رو ترکیب میکنیم با کد سورس اصلی و تمام وابستگی هاش (dependencies) رو هم نصب و دانلود میکنیم و سورس رو تبدیل میکنیم به همون چیزی که کاربر نهایی قراره در این نسخه ببینه.

– Test

در این مرحله، به صورت خودکار، تست هایی که پروژه باید سپری بکنه تا صحتش اعتبارسنجی بشه اجرا میشن. هم توی کد و هم رفتار کلی محصول. این مهمترین مرحله هست که باعث میشه نسخه نهایی بدون باگ Bug free و بدون کرش Crash free باشه.

– Deploy

در اینجا محیط های انتشار متفاوتی وجود داره، مثلا Beta یا staging که برای تیم داخلی قابل استفاده و در دسترس هست و همچنین محیط ساخت production که دقیقا همونجایی هست که کاربر نهایی میبینه.