Documentation / CI-CD
راهنمای جامع CI/CD محصول Gitrabbit
این سند مرجع کامل کاربر و تیم عملیات برای CI/CD است: از Onboarding و اولین Pipeline تا Deployment، Rollback، Billing و Launch Guardrails. برای آشنایی با CLI به راهنمای grb و برای مدل شاخهها به مستندات Branches مراجعه کنید.
۱ — تصویر کلی محصول CI/CD
Pipeline Engine
DAG scheduling، retry/timeout، recovery و finalization پایدار.
Observability
Graph، logs با SSE، artifacts، metrics و timeline.
Deployments
Preview/Production، rollout URL و rollback سریع.
SaaS Multi-tenant
org scoping، RBAC، quotas، usage tracking.
Billing (Iran MVP)
upgrade request، invoice pending، approve/reject دستی.
Launch Control
feature rollout، kill-switch، rate-limit و health dashboard.
۲ — مسیر کاربر از شروع تا Deploy
- ورود به بخش CI مخزن: /repos/<repoId>/ci
- اجرای Onboarding Wizard: تعریف org، اتصال repo، بررسی اولین run، و deploy اولیه.
- پیگیری Pipelineها در داشبورد با health score، quick actions، و وضعیت شاخه/commit.
- تحلیل run detail: DAG stage/job، logs grouping، jump-to-failure و artifacts per-job.
- مدیریت deployها: انتخاب environment، مشاهده timeline، و rollback ایمن.
- مدیریت SaaS: plan، invoices، API tokens، اعضا و activity feed.
۳ — Lifecycle فنی اجرا (Pipeline/Job/Deploy)
Developer push/commit
→ CI Event Dispatch
→ Pipeline Run created (queued/running)
→ DAG job scheduling
→ Docker runner execution
→ Logs + artifacts persisted
→ Finalize run (success/failed/cancelled/timed_out)
→ Optional deployment enqueue| Entity | State Machine | نکته |
|---|---|---|
| PipelineRun | queued → running → success|failed|cancelled|timed_out | finalize/recovery تضمین میکند run orphan نشود. |
| Job | queued|waiting → running → terminal | claim + lease برای جلوگیری از double-run. |
| Deployment | queued/pending → building → deploying → active|failed|rolled_back | rollback بدون rebuild روی environment pointer انجام میشود. |
۴ — Observability برای کاربران
- Pipeline Graph: گرههای stage/job با وضعیت رنگی و انتخاب تعاملی.
- Logs Explorer: stream با SSE، فیلتر job/stage، جستجو، collapse per-job.
- Artifacts: لیست per-run/per-job، size/retention و دانلود مستقیم.
- Metrics: success rate، average duration، failure class trends.
۵ — SaaS و Billing برای تیم محصول
- Org-centered isolation: تمام مسیرهای CI data با org scope محافظت میشوند.
- RBAC: owner/admin/developer/viewer و permission checks در APIها.
- Quota enforcement: pipeline/deploy/concurrent jobs/storage بهصورت runtime block.
- Billing مدل MVP ایران: invoice pending_admin_review و approve/reject دستی.
- Plan change flow: upgrade intent + downgrade با grace period.
۶ — Launch Control و Production Guardrails
برای rollout تدریجی و عملیات امن، سیستم از feature flags، guardrails و kill-switch استفاده میکند.
# Rollout
CI_ROLLOUT_MODE=internal_only|beta_users|percentage|full_public
CI_BETA_ORG_IDS=<org1,org2,...>
CI_ROLLOUT_PERCENT=0..100
# Launch mode
CI_LAUNCH_MODE=true
# Kill switches
CI_DISABLE_EXECUTION=true|false
CI_DISABLE_DEPLOYMENTS=true|false
CI_DISABLE_BILLING_CHANGES=true|false- rollout mode per-org با bucket ثابت (deterministic hashing).
- queue overload protection و deployment failure spike detection.
- rate limits برای CI triggers، deployment triggers و SSE streams.
- Admin Launch Console: override feature/quota + suspend org + health snapshot.
۷ — API Reference سریع برای کاربران
# Runs
GET /api/ci/runs?repoId=<repoId>
GET /api/ci/runs/<runId>
POST /api/ci/runs/<runId>/cancel
# Graph / Logs / Artifacts
GET /api/ci/runs/<runId>/graph
GET /api/ci/runs/<runId>/logs
GET /api/ci/runs/<runId>/logs/stream
GET /api/ci/runs/<runId>/artifacts
# Deployments
GET /api/ci/deployments?repoId=<repoId>
POST /api/ci/deployments
GET /api/ci/deployments/<deploymentId>
POST /api/ci/environments/<envId>/rollback
# SaaS
GET /api/saas/billing/invoices
POST /api/saas/billing/invoices
POST /api/saas/billing/invoices/<invoiceId>/approve
POST /api/saas/billing/invoices/<invoiceId>/reject
GET /api/saas/orgs/<orgId>/tokens
POST /api/saas/orgs/<orgId>/tokensبرای استفادهی مستقیم در محصول، بهتر است ابتدا از UIهای /repos/<repoId>/ci، /ci/deployments و /ci/saas شروع کنید و سپس endpointها را در automation داخلی مصرف کنید.
۸ — Best Practices عملیاتی
- قبل از هر deploy production، حداقل یک run success روی branch اصلی داشته باشید.
- در صورت failure، ابتدا run detail و failureClass را بررسی کنید و مستقیم deploy نکنید.
- برای automation، از org tokens با scope محدود استفاده کنید (least privilege).
- در rollout عمومی، ابتدا internal_only سپس beta_users و در نهایت percentage/public.
- در روز لانچ، داشبورد سلامت و kill-switchها را در دسترس تیم on-call نگه دارید.