FutureForgeFutureForge

خدمات FutureForge

  • طراحی و ساخت محصولاز شناخت نیاز تا انتشار محصول، یک مسیر روشن پیش رو دارید.
  • توسعه فول‌استکوب‌اپلیکیشن، API و داده را هماهنگ و یکپارچه توسعه دهید.
  • ممیزی مهندسیپیش از هزینه‌ی بیشتر، از وضعیت واقعی محصول‌تان باخبر شوید.
  • مشاوره معماریپیش از یک تصمیم فنی پرهزینه، گزینه‌ها را درست بسنجید.
  • زیرساخت و استقرارمحصول را با خیال راحت منتشر کنید و پایدار نگه دارید.
  • هوش مصنوعی در محصولهوش مصنوعی را فقط جایی به کار می‌گیریم که مسئله‌ای را حل کند.
نمونه‌کارهایادداشت‌هاقیمت‌گذاریدرباره ما
شروع گفتگو
  1. خانه
  2. /یادداشت‌ها
  3. /یادداشت‌ها
FutureForge

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

خدمات

طراحی سایت با وردپرستوسعه اختصاصیمهندسی محصولزیرساخت و استقرارمشاوره معماریهوش مصنوعی در محصول

راهنمای انتخاب

یادداشت‌هاقیمت‌گذاریتخمین هزینه پروژهمقایسه روش‌هانمونه‌کارهادرباره ماتماس

ارتباط

hello@futureforge.ir

ایده‌ای برای ساخت دارید؟

نیازتان را مطرح کنید تا درباره مسیر توسعه و قدم بعدی صحبت کنیم.

شروع گفتگو

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

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

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

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

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

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 است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

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

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

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

خدمات مرتبط

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

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

برای انتخاب مسیر فنی پروژه‌تان کمک می‌خواهید؟

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

سهیل ابراهیم‌پور
یادداشت‌ها
امنیت n8n: اعتبارنامه، وب‌هوک و SSRF
نصب n8n روی سرور با Docker Compose
n8n چیست و چگونه کار می‌کند؟
امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی
بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

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

امنیت n8n: اعتبارنامه، وب‌هوک و SSRF

۹ آبان ۱۴۰۵

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

نصب n8n روی سرور با Docker Compose

۸ آبان ۱۴۰۵

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

n8n چیست و چگونه کار می‌کند؟

۸ آبان ۱۴۰۵

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

امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی

۶ آبان ۱۴۰۵

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

بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

۲ آبان ۱۴۰۵
همه یادداشت‌ها315
معماری نرم‌افزار31
واژه‌نامه37
عملیات و استقرار94
مهندسی محصول122
راهنمای وب31
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
شروع گفتگو
ابزارهای رایگان
شروع گفتگو