mirror of
https://github.com/rtk-ai/rtk.git
synced 2026-03-28 01:41:35 +00:00
7.0 KiB
7.0 KiB
CI/CD Flows
PR Quality Gates (ci.yml)
Trigger: pull_request to develop or master
┌──────────────────┐
│ PR opened │
└────────┬─────────┘
│
┌────────▼─────────┐
│ fmt │
└────────┬─────────┘
│
┌────────▼─────────┐
│ clippy │
└──┬───┬───┬───┬───┘
│ │ │ │
┌──────────────┘ │ │ └──────────────┐
│ ┌───────┘ └───────┐ │
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌───────────┐ ┌──────────┐
│ test │ │Security Scan │ │ benchmark │ │ validate │
│ ubuntu │ │ cargo audit │ │ >=80% │ │ ai agent │
│ windows │ │ (advisory) │ │ savings │ │ doc │
│ macos │ │ │ │ │ │ │
└──────┬───────┘ └──────┬───────┘ └─────┬─────┘ └────┬─────┘
│ │ │ │
└────────────────┴───────┬───────┴─────────────┘
│
┌──────────▼─────────┐
│ All must pass │
│ to merge │
└────────────────────┘
+ DCO check (independent, develop PRs only)
Merge to develop — pre-release (cd.yml)
Trigger: push to develop | workflow_dispatch (not master) | Concurrency: cancel-in-progress
┌──────────────────┐
│ push to develop │
│ OR dispatch │
└────────┬─────────┘
│
┌────────▼──────────────────┐
│ pre-release │
│ compute next version │
│ from conventional commits │
│ tag = v{next}-rc.{run} │
└────────┬──────────────────┘
│
┌────────▼──────────────────┐
│ release.yml │
│ prerelease = true │
└────────┬──────────────────┘
│
┌────────▼──────────────────┐
│ Build │
│ 5 platforms + DEB + RPM │
└────────┬──────────────────┘
│
┌────────▼──────────────────┐
│ GitHub Release │
│ (pre-release badge) │
│ │
│ Discord: SKIPPED │
│ Homebrew: SKIPPED │
└──────────────────────────┘
Merge to master — stable release (cd.yml)
Trigger: push to master (only) | Concurrency: never cancelled
┌──────────────────┐
│ push to master │
└────────┬─────────┘
│
┌────────▼──────────────────┐
│ release-please │
│ analyze conventional │
│ commits │
└────────┬──────────────────┘
│
┌────┴────────────────┐
│ │
no release release created
│ │
▼ ▼
┌──────────────┐ ┌───────────────────────┐
│ create/update│ │ release.yml │
│ release PR │ │ prerelease = false │
└──────────────┘ └───────────┬───────────┘
│
┌────────────▼────────────┐
│ Build │
│ 5 platforms + DEB + RPM │
└────────────┬────────────┘
│
┌────────────▼────────────┐
│ GitHub Release │
│ (stable, "Latest" badge) │
└──┬─────────┬─────────┬──┘
│ │ │
▼ ▼ ▼
Discord Homebrew latest
notify tap update tag
Manual release (release.yml)
Trigger: workflow_dispatch
┌────────────────────────┐
│ workflow_dispatch │
│ inputs: tag, prerelease │
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ Full build pipeline │
│ 5 platforms + DEB + RPM │
└───────────┬────────────┘
│
┌──────┴──────┐
│ │
prerelease=false prerelease=true
│ │
▼ ▼
Discord pre-release
Homebrew badge only
latest tag