mirror of
https://github.com/rtk-ai/rtk.git
synced 2026-09-19 07:33:17 +08:00
865749438e
Signed-off-by: aesoft <43991222+aeppling@users.noreply.github.com>
140 lines
7.0 KiB
Markdown
140 lines
7.0 KiB
Markdown
# 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
|
|
```
|