CI/CD یکی از مفاهیم کلیدی در DevOps هست که به زبان ساده یعنی:
CI = Continuous Integration (یکپارچهسازی مداوم)
یعنی هر وقت توسعهدهندهها کدی مینویسن و در مخزن (repository مثل GitHub یا GitLab) ذخیره میکنن:
- تغییرات به صورت خودکار تست میشه (unit test, integration test و غیره).
- مطمئن میشیم که کد جدید با کدهای قبلی تداخل یا خطا ایجاد نکرده.
نتیجه: کد همیشه تمیز، تستشده و قابل ادغام در پروژه است.
CD = Continuous Delivery (تحویل مداوم) یا Continuous Deployment (انتشار مداوم)
بعد از اینکه کد با موفقیت تست شد، مرحلهی CD شروع میشه. اینجا دو حالت داریم:
- Continuous Delivery (تحویل مداوم):
کد آمادهی انتشار میشه و روی محیط staging یا تست قرار میگیره. انتشار نهایی به محیط اصلی (production) همچنان نیاز به تأیید دستی داره. - Continuous Deployment (انتشار مداوم):
کد بعد از تستها به صورت خودکار و بدون نیاز به دخالت انسان روی محیط اصلی (production) منتشر میشه.
نتیجه: کاربر خیلی سریع به تغییرات و ویژگیهای جدید دسترسی پیدا میکنه.
یک مثال واقعی
فرض کن یه اپلیکیشن وب داری:
- برنامهنویس یه تغییر روی سیستم رزرو اضافه میکنه.
- وقتی push به GitHub انجام میشه:
- CI شروع میشه → build + تست خودکار.
- اگر همهچیز اوکی بود:
- CD وارد عمل میشه → اپلیکیشن روی سرور staging یا production بهروزرسانی میشه.
مزایای CI/CD
- کاهش خطاهای انسانی
- سرعت بالاتر در ارائهی فیچرها
- بازخورد سریع از کاربران
- کیفیت بهتر کد
- همتیمیها راحتتر همکاری میکنن
مفهوم Pipeline
در DevOps وقتی میگیم pipeline یعنی یک زنجیرهی خودکار از مراحل که کد از لحظهای که push میشه تا زمانی که روی سرور نهایی (production) مستقر میشه، طی میکنه.
به زبان ساده:
برنامهنویس → (Pipeline) → محصول آماده برای کاربر
هر مرحله در pipeline مثل یک ایستگاهه:
- Build → کد کامپایل یا بستهبندی میشه.
- Test → تستهای خودکار اجرا میشن.
- Deploy → انتشار روی محیط staging یا production.
فلوچارت ساده CI/CD Pipeline
توضیح مراحل
- Developer Pushes Code: توسعهدهنده کد رو در GitHub/GitLab میفرسته.
- Build Stage: کد کامپایل یا Docker Image ساخته میشه.
- Test Stage: تستها اجرا میشه (واحد، یکپارچه، امنیتی).
- Staging Deploy: اگر تستها اوکی بود روی محیط آزمایشی (staging) منتشر میشه.
- Manual Approval: (فقط در Continuous Delivery) مدیر یا تیم DevOps انتشار به محیط اصلی رو تأیید میکنه.
- Production Deploy: (در Continuous Deployment خودکار انجام میشه) تغییرات روی محیط اصلی اعمال میشه.
Pipeline = مجموعهای از مراحل خودکار برای رساندن کد از dev تا production.
CI = تمرکز روی build + test (کیفیت کد).
CD = تمرکز روی deploy (رسوندن سریع کد به کاربر).