Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی و ساخت محصولتوسعه فول‌استکممیزی مهندسیمشاوره معماریزیرساخت و استقرارهوش مصنوعی در محصول

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

ممیزی مهندسیمشاور معماریتخمین پروژهابزار پرامپت

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
عملیات و استقرار

CI/CD چیست؟ یکپارچه‌سازی و تحویل پیوسته نرم‌افزار

CI یکپارچه‌سازی پیوسته و CD تحویل/استقرار پیوسته است — مفاهیم workflow، job و runner با ارجاع به GitHub Actions و پیوند به Deployment.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·5 دقیقه مطالعه
CI/CD چیستContinuous IntegrationContinuous DeliveryContinuous DeploymentGitHub Actionspipeline
پایپ‌لاین Commit Build Test Deploy با برچسب Automate Delivery

CI/CD مخفف دو ایدهٔ به‌هم‌پیوسته است: Continuous Integration (یکپارچه‌سازی پیوسته) و Continuous Delivery یا Continuous Deployment (تحویل یا استقرار پیوسته). هدف کاهش فاصلهٔ بین تغییر کد و رسیدن ارزش به کاربر است — با خودکارسازی build، تست و در صورت آمادگی، انتشار — نه با عجلهٔ بی‌کنترل.

GitHub Actions را مستندات رسمی یک پلتفرم CI/CD می‌نامد که می‌تواند هر pull request را بسازد و تست کند یا تغییرات ادغام‌شده را به Production ببرد. Docker هم Container را برای جریان‌های CI/CD مناسب می‌داند چون محیط تست و اجرا یکنواخت می‌شود. Kubernetes تأکید می‌کند خودش CI را دیکته نمی‌کند؛ فرهنگ و نیاز سازمان مسیر را مشخص می‌کند.

این مقاله واژگان را جدا می‌کند، اجزای یک workflow را با زبان GitHub Actions توضیح می‌دهد، و به مقالهٔ استقرار (۰۵۰) و کانتینر (۱۰۵) وصل می‌شود.

وایت‌برد Continuous Integration و Continuous Delivery با Fast Feedback

پاسخ کوتاه

CI یعنی هر تغییر مهم (معمولاً با push یا pull request) به‌صورت خودکار ساخته و تست شود تا شکستن main زود دیده شود. Continuous Delivery یعنی همیشه یک artifact آماده‌ٔ انتشار داشته باشید که با یک تصمیم/تأیید به محیط واقعی برود. Continuous Deployment یعنی همان مسیر تا Production بدون تأیید دستی پیش برود — فقط وقتی تست، مشاهده‌پذیری و Rollback واقعاً پخته باشند دفاع‌پذیر است.

CI/CD ابزار جادویی کیفیت نیست؛ کیفیت را زودتر و تکرارپذیرتر بررسی می‌کند. بدون تست معنادار، pipeline فقط سرعت خرابکاری را بالا می‌برد.

اول CI سبز و قابل اعتماد بسازید؛ CD را وقتی Rollback و healthcheck دارید روشن کنید.

CI، Delivery و Deployment — سه لایه

  • Continuous Integration: ادغام مکرر تغییرات در شاخهٔ مشترک + build/تست خودکار.
  • Continuous Delivery: آماده‌بودن همیشگی برای انتشار؛ Deploy به Production معمولاً با تأیید.
  • Continuous Deployment: هر تغییر پاس‌شده به‌طور خودکار به Production می‌رود.

در گفتگوی فارسی گاهی همه را «سی‌آی‌سی‌دی» می‌گویند. برای تصمیم، مشخص کنید کدام لایه را می‌خواهید امسال. بیشتر تیم‌های در حال رشد از CI قوی + Deploy خودکار به Staging + Deploy دستی/تأییدی به Production سود می‌برند.

اجزای GitHub Actions به‌عنوان مدل ذهنی

حتی اگر از GitLab CI یا Jenkins استفاده کنید، این واژه‌ها قابل نگاشت‌اند:

  • Workflow: فرایند خودکار تعریف‌شده با YAML در مخزن (مثلاً `.github/workflows`).
  • Event: رویداد تریگر — push، pull_request، زمان‌بندی، یا دستی.
  • Job: مجموعه‌ای از stepها روی یک runner؛ jobها موازی یا وابسته.
  • Step: اسکریپت یا action آماده‌ (checkout، setup زبان، build).
  • Action: واحد قابل‌استفادهٔ مجدد برای کارهای تکراری.
  • Runner: ماشینی که job را اجرا می‌کند (میزبان GitHub یا self-hosted).

مستندات GitHub می‌گوید هر job در VM یا Container تازه اجرا می‌شود و stepها روی همان runner به ترتیب به داده‌های هم دسترسی دارند. Matrix می‌تواند یک job را روی چند نسخهٔ زبان/OS تکرار کند.

پیوند با Container و Deployment

Docker سناریوی رایجی را توصیف می‌کند: توسعه محلی در Container، push به محیط تست، رفع باگ، و ارسال Image به‌روز به Production. CI این مسیر را از حافظهٔ فردی خارج می‌کند: همان Dockerfile، همان تست، همان Registry.

مقالهٔ ۰۵۰ مسیر Build / Release / Run را از Twelve-Factor گفت. CI معمولاً Build و تست را مالک می‌شود؛ CD Release را به محیط می‌رساند. Artifact یکسان بین Staging و Production همچنان طلایی است.

جدول تصمیم مرحله‌ای برای تیم کوچک

مرحله بلوغچه خودکار شودهنوز دستی بماند
۰—همه؛ حداقل اسکریپت مستند
۱lint و تست روی PRDeploy
۲build Image + تستDeploy Production
۳Deploy خودکار Stagingتأیید انسان برای Production
۴CD کامل به Productionفقط اگر SLO، تست و Rollback قوی است

چه چیزهایی را در pipeline بگذارید؟

  1. Checkout و نصب وابستگی با قفل نسخه.
  2. Lint/format در صورت ارزش تیمی.
  3. تست واحد و در صورت امکان تست یکپارچهٔ سبک.
  4. Build artifact یا Image با تگ/digest.
  5. اسکن آسیب‌پذیری اولیهٔ وابستگی/Image (در حد ظرفیت).
  6. Deploy به Staging با Secret محیط.
  7. تأیید و Deploy Production با concurrency تا روی هم نیفتند.

همه را روز اول لازم ندارید. یک PR سبز که تست را اجرا کند از صفر بهتر است؛ پیچیدگی را با درد اضافه کنید.

ضدالگوها

  • Pipeline قرمز طولانی که همه Ignore می‌کنند.
  • Deploy مستقیم از لپ‌تاپ در حالی که CI همان commit را نساخته.
  • Secret در لاگ workflow یا در متغیر بدون محیط جدا.
  • تست‌هایی که به شبکهٔ ناپایدار بیرون وابسته‌اند و flaky شده‌اند.
  • Continuous Deployment بدون healthcheck و مالک on-call.

CI/CD و Kubernetes

K8s محل اجرای وضعیت مطلوب است نه کارخانهٔ build. منیفست‌ها Image را از Registry می‌کشند؛ ساخت Image کار CI است. مستندات Kubernetes صریحاً می‌گوید سورس را deploy و اپ را build نمی‌کند و CI/CD به ترجیح سازمان وابسته است. پس «روی K8s رفتیم» جایگزین طراحی pipeline نیست.

جمع‌بندی برای تصمیم

CI/CD مسیر خودکار از تغییر کد تا اطمینان و در نهایت انتشار است. CI یکپارچگی و تست مکرر می‌آورد؛ Delivery آمادگی انتشار؛ Deployment خودکارسازی کامل تا Production. با مدل workflow/job/runner فکر کنید، از مرحلهٔ ۱ جدول بلوغ شروع کنید، و artifact یکسان را حفظ کنید.

اگر یک بهبود این اسپرینت می‌خواهید: روی هر pull request به main، تست و build را اجباری کنید. بعد Deploy Staging را وصل کنید. Production را آخرین چراغ روشن کنید.

منابع و مراجع

  • GitHub Docs — Understanding GitHub Actions — https://docs.github.com/en/actions/about-github-actions/understanding-github-actions
  • Docker Docs — What is Docker? (CI/CD workflows) — https://docs.docker.com/get-started/docker-overview/
  • Kubernetes Docs — What Kubernetes is not (CI/CD) — https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

برای استقرار مقالهٔ ۰۵۰ و برای مشاهده بعد از انتشار مقالات ۱۱۳ و ۱۱۴ را ببینید.

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

اگر موضوع این مقاله به سیستم یا محصول شما نزدیک است، می‌توانیم درباره دامنه واقعی صحبت کنیم.

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload
Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار
چرا همیشه به Kubernetes نیاز ندارید؟
Kubernetes چیست؟ اجرای مقاوم workloadهای کانتینری

عملیات و استقرار

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

چرا همیشه به Kubernetes نیاز ندارید؟

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Kubernetes چیست؟ اجرای مقاوم workloadهای کانتینری

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید