Future ForgeFuture ForgeFuture ForgeFuture Forge
ServicesWorkPackagesFree toolsNotesAboutContact
Start
  1. Home
  2. /Notes
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Discuss your project

Contact

hello@futureforge.ir09128464105
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Services

Product engineeringFull-stack engineeringEngineering auditArchitecture consultingInfrastructure and deploymentAI in the product

Explore

WorkNotesFAQPackages

Free tools

Engineering auditArchitecture advisorProject estimatorPrompt tool

Company

AboutContactPrivacyTerms of use

Discuss your project

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Discuss your project

Contact

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. All rights reserved.

HomeServicesFree toolsStart
Operations

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

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

SE
Soheil Ebrahimpour

Founder & product engineer

·Sep 20, 2026·5 min read
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/

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

Author

SE

Soheil Ebrahimpour is the founder of FutureForge. He works on product design, architecture, and getting custom software into production.

Related notes

Related notes

Categories

Related services

From note to project

If this topic is close to your product or system, we can talk about the real scope.

If you are unsure about architecture or the build path, we can talk about the project.

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

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

Operations

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

Sep 20, 2026

Operations

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

Sep 20, 2026

Operations

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

Sep 20, 2026

Operations

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

Sep 20, 2026

Operations

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

Sep 20, 2026
All notes219
Software architecture13
Glossary37
Operations87
Product engineering74
Web guide8
Product engineering
Full-stack engineering
Engineering audit
Architecture consulting
Infrastructure and deployment
Discuss your project
Free tools
Discuss your project